如何计算当前和以前的日期?

时间:2013-01-09 10:30:11

标签: mysql

例如,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
)

但是可能有更方便的方法吗?

1 个答案:

答案 0 :(得分:0)

试试这个:

对于CURRENT:

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');

对于PREVIOUS:

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