1

たとえば、MySQLは をNOW()返す2013-01-09 12:20:06ため、以下に指定されているようにすべての行をカウントする必要があります。

現時点の:

  • 時間: 2013-01-09 12:00:00 からNOW()
  • 日: 2013-01-08 00:00:00 からNOW()
  • 月: 2013-01-01 00:00:00 からNOW()

  • 時間: 2013-01-09 11:00:00 - 2013-01-09 12:00:00
  • 日: 2013-01-08 00:00:00 - 2013-01-08 23:59:59
  • 月: 2012-12-01 00:00:00 - 2013-01-01 00:00:00

私は次のようなものを試しました:

WHERE
    `date` >= DATE_FORMAT(NOW(), '%Y-%m-%d %h:00:00')
AND `date` >= DATE_SUB(
    DATE_FORMAT(NOW(), '%Y-%m-%d %h:00:00'),
    INTERVAL 10 MONTH
)

しかし、もっと便利な方法があるのではないでしょうか?

4

1 に答える 1

0

これを試して:

現在の場合:

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00');
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00');
SELECT DATE_FORMAT(NOW(), '%Y-%m-01 00:00:00');

前の場合:

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00'), DATE_SUB(DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00'), INTERVAL 1 HOUR);
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00'), DATE_SUB(DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00'), INTERVAL 1 DAY);
SELECT DATE_FORMAT(NOW(), '%Y-%m-01 00:00:00'), DATE_SUB(DATE_FORMAT(NOW(), '%Y-%m-01 00:00:00'), INTERVAL 1 MONTH);

このリンクを確認してくださいSQL FIDDLE DEMO

于 2013-01-09T10:51:21.217 に答える