1

例如 MySQLNOW()返回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 回答