首页 > 解决方案 > 当列为 unix 格式时,在两个日期之间拉取行

问题描述

我正在尝试在列为 unix 格式的两个日期之间提取行。这是我到目前为止提出的查询,但我没有得到任何返回的行。

SELECT 
   id, 
   date_format(from_unixtime(created_time), '%Y-%m-%d') as created_date

FROM table

WHERE
   date_format(from_unixtime(created_time), '%Y-%m-%d') BETWEEN 2020-12-10 AND 2020-12-31

标签: mysqlsql

解决方案


您需要将格式化的日期放在引号中。

最好将开始和结束时间转换为 unix 时间,然后比较它们而不是格式化表中的所有时间。如果列被索引,这将允许使用索引。即使不是,比较数字也比格式化每个值要少得多。

SELECT id, date_format(from_unixtime(created_time), '%Y-%m-%d') as created_date
FROM table
WHERE created_time BETWEEN UNIX_TIMESTAMP('2020-12-10') AND UNIX_TIMESTAMP('2020-12-31 23:59:59')

推荐阅读