首页 > 解决方案 > 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 的数据也被提取了。我不知道为什么会这样。

标签: mysql

解决方案


您对“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'

推荐阅读