我如何从最后一个时钟小时中选择。例如,如果是3:30,我将如何从3点钟开始选择?我知道如何从查询运行的最后一小时开始,但我不知道该怎么做。
答案 0 :(得分:3)
在WHERE
子句中尝试此操作:
WHERE DATE(columnname) = DATE(CURRENT_TIMESTAMP)
AND HOUR(columnname) = HOUR(CURRENT_TIMESTAMP)
<强>参考强>
答案 1 :(得分:1)
为获得最佳性能,您需要在裸列上使用谓词,而不是将列引用包装在函数中(如在所选答案中)。
要将返回的行限制为仅当前时钟小时内具有mydatetimecol
值的行:
WHERE mydatetimecol >= DATE_FORMAT(NOW(),'%Y-%m-%d %H:00:00')
右侧的表达式是向下舍入到小时的当前日期时间值。 (在此示例中,这是通过将当前日期时间格式化为分钟和秒部分的零来完成的。这不是执行此操作的唯一方法,但此方法比其他方法更容易阅读。)
请注意,不需要在函数中包装列引用。在谓词中使用对mydatetimecol
的裸列引用使MySQL能够在mydatetimecol
上使用索引范围扫描。
答案 2 :(得分:0)
这是John Conde答案的变体。它可能运行得更快,因为它不使用where子句中的函数。语法可能不正确,因为我不使用mysql并使用谷歌查找语法。
where yourdatetimefield >= timestampadd(minute,
, -minute(current_timestamp), current_timestamp)