1

如何截断 now() 以在 mysql 中仅获得高达小时的精度?

select id from Run where submitTs <= now()  and submitTs >= (now()  - interval 1 hour);

如果我在 1.23 PM 运行,我真的想要从 12.00 PM 到 1 PM 而不是 12.23 PM 到 1.23 PM 的记录。

那我怎么说

  submitTs<= truncate_to_hour(now())
4

3 回答 3

3

试试这个查询 -

SELECT
  id
FROM
  Run
WHERE
  DATE(submitTs) = CURDATE() AND
  EXTRACT(HOUR FROM NOW()) = EXTRACT(HOUR FROM submitTs)

此查询比第一个查询具有更好的性能 -

SELECT
  id
FROM
  Run
WHERE
  submitTs >= CURDATE() + INTERVAL EXTRACT(HOUR FROM NOW()) HOUR AND
  submitTs < CURDATE() + INTERVAL EXTRACT(HOUR FROM NOW()) + 1 HOUR
于 2012-08-29T07:49:03.947 回答
1

像这样的东西应该工作:

SELECT id 
FROM Run 
WHERE submitTs BETWEEN CAST(CONCAT(DATE_FORMAT(NOW(), '%Y-%m-%d %h'), ':00:00') AS DATETIME)
      AND CAST(CONCAT(DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 HOUR), '%Y-%m-%d %h'), ':00:00') AS DATETIME);
于 2012-08-29T07:37:26.943 回答
0

我认为这样的事情可以帮助你获得现在的时间():

HOUR(TIME(NOW())

请参阅http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html中的参考,以在 mysql 中获取更多日期时间函数。

于 2012-08-29T07:45:37.520 回答