Mysql如何根据时间检索数据?

时间:2016-07-04 09:17:42

标签: mysql

我需要根据时间和日期从表中检索数据,即我需要从昨天下午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)

2 个答案:

答案 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'));