1

mysqlで最大1時間の精度のみを取得するためにnow()を切り捨てるにはどうすればよいですか?

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

1.23 PMで実行している場合、12.23PMから1.23PMではなく、12.00PMから1PMまでのレコードが本当に必要です。

だから私はどのように言うのですか

  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

私はこのようないくつかのことがあなたがnow()の時間を得るのを助けることができると思います:

HOUR(TIME(NOW())

mysqlでより多くの日時関数を取得するには、 http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.htmlのリファレンスを参照してください。

于 2012-08-29T07:45:37.520 に答える