我已将帐单日期存储在mysql的timestamp
中。
在报告中,我以dd-mm-YYYY
的格式获取日期和日期。在查询中,我是这样使用的,
WHERE (from_unixtime(bill.bill_date,"%d-%m-%Y")) >='06-04-2019' AND (from_unixtime(bill.bill_date,"%d-%m-%Y")) <= '30-04-2019'
但是也获取了06/05/2019的数据。我不知道为什么会这样。
答案 0 :(得分:1)
您对值'06 -05-2019'大于'06 -04-2019'感到惊讶吗?
您不能将日期{%1%}用作>=
等不等式。 MySQL倾向于使用%Y-%m-%d格式,这是它在检查日期和不等式比较的排序顺序时采用的格式。
您应使用FROM_UNIXTIME()
,且不要使用格式参数。然后它将以%Y-%m-%d格式返回日期,该格式确实支持不平等比较。
使用%Y-%m-%d格式的日期文字。
我会这样写你的表情:
WHERE from_unixtime(bill.bill_date) BETWEEN '2019-04-06' AND '2019-04-30'
答案 1 :(得分:0)
您是否尝试过使用between
?
WHERE (from_unixtime(bill.bill_date,"%d-%m-%Y")) BETWEEN '06-04-2019' AND '30-04-2019'
答案 2 :(得分:0)
您要为列指定格式,而不是条件值。试试:
WHERE (from_unixtime(bill.bill_date,"%d-%m-%Y")) >=STR_TO_DATE('06-04-2019', '%d-%m-%Y') AND (from_unixtime(bill.bill_date,"%d-%m-%Y")) <= STR_TO_DATE('30-04-2019', '%d-%m-%Y')
或更妙的是:
WHERE (from_unixtime(bill.bill_date,'%Y-%m-%d')) BETWEEN '2019-04-06' AND '2019-04-30'