mysql - 当列为 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
解决方案
您需要将格式化的日期放在引号中。
最好将开始和结束时间转换为 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')