我需要根据时间和日期从表中检索数据,即我需要从昨天下午5点到当天直到下午5点获取数据。我已经尝试了以下代码,其中我检索了昨天和今天,但是有时间它没有帮助解决此问题注释:修改的列是时间戳
SELECT *
FROM `mdl_forum_posts`
WHERE from_unixtime(modified, '%Y-%m-%d') = CURDATE()
OR from_unixtime(modified, '%Y-%m-%d') = date(CURDATE()-1)
答案 0 :(得分:1)
SELECT * FROM `mdl_forum_posts`
WHERE modified BETWEEN UNIX_TIMESTAMP(
CONCAT(DATE_FORMAT(CURDATE()- INTERVAL 1 DAY, '%Y-%m-%d'), ' 17:00:00'))
AND UNIX_TIMESTAMP(
CONCAT(CURDATE(), ' 17:00:00'));
请注意,CURDATE()是polymorphic; DATE_FORMAT是第一个谓词所必需的,其中计算强制使用类似整数的返回类型。
在谓词中的函数中包装属性会禁用索引的使用 - 将反函数应用于文字允许使用索引(即使没有索引也会更快,因为函数只需要被调整一次)。 / p>
答案 1 :(得分:0)
如果该日期的第一天CURDATE() - INTERVAL 1 DAY给出确切的前一天日期
SELECT * FROM `mdl_forum_posts`
WHERE modified BETWEEN UNIX_TIMESTAMP(
CONCAT(CURDATE() - INTERVAL 1 DAY, '%Y-%m-%d'), ' 17:00:00'))
AND UNIX_TIMESTAMP(
CONCAT(CURDATE(), ' 17:00:00'));