-5

我将如何从最后一个时钟小时中选择。例如,如果是 3:30,我将如何从 3 点钟开始选择?我知道如何在查询运行后的最后一个小时内执行此操作,但我不知道如何执行此操作。

4

3 回答 3

3

WHERE在你的条款 中试试这个:

 WHERE DATE(columnname) = DATE(CURRENT_TIMESTAMP)
   AND HOUR(columnname) = HOUR(CURRENT_TIMESTAMP)

参考

于 2013-02-18T20:26:04.170 回答
1

为了获得最佳性能,您希望在裸列上使用谓词,而不是将列引用包装在函数中(如所选答案中所示)。

mydatetimecol要将返回的行限制为仅在当前时钟小时内具有值的行:

 WHERE mydatetimecol >= DATE_FORMAT(NOW(),'%Y-%m-%d %H:00:00')

右侧的表达式是向下舍入到小时的当前日期时间值。(在此示例中,这是通过将当前日期时间格式化为分钟和秒部分的零来完成的。这不是唯一的方法,但这种方法比其他方法更容易阅读。)

请注意,无需将列引用包装在函数中。在谓词中使用裸列引用mydatetimecol使 MySQL 能够对mydatetimecol.

于 2013-02-18T21:05:33.920 回答
0

这是约翰康德答案的变体。它可能运行得更快,因为它不使用 where 子句中的函数。语法可能不正确,因为我不使用 mysql 并且正在使用 google 来查找语法。

where yourdatetimefield >= timestampadd(minute, 
, -minute(current_timestamp), current_timestamp)
于 2013-02-18T20:51:34.753 回答