mysql - Mysql使用存储在表中的时间戳过滤数据
问题描述
我已将账单日期存储timestamp
在 mysql 中。
在报告中,我从格式中获取到日期。在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 的数据也被提取了。我不知道为什么会这样。
解决方案
您对“06-05-2019”的值大于“06-04-2019”的值感到惊讶吗?
您不能使用>=
%d-%m-%Y 格式的日期等不等式。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'