我将如何从最后一个时钟小时中选择。例如,如果是 3:30,我将如何从 3 点钟开始选择?我知道如何在查询运行后的最后一个小时内执行此操作,但我不知道如何执行此操作。
问问题
975 次
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 回答