查询以选择当前和之前的小时,日和月

Kin*_*Kin 2 mysql sql datetime

我在sql中不是很好,所以我想知道这些陈述是否适用于选择curent和之前的小时,日和月?

DATE_SUB(NOW(), INTERVAL '1' HOUR) <= ADDTIME(Datestamp, Timestamp)
DATE_SUB(NOW(), INTERVAL '1' DAY) <= ADDTIME(Datestamp, Timestamp)
DATE_SUB(NOW(), INTERVAL '1' MONTH) <= ADDTIME(Datestamp, Timestamp)
Run Code Online (Sandbox Code Playgroud)

例如,如果现在14:49那么我需要计算:

  1. 所有从14:00到15:00(或直到14:49) - DATE_SUB(NOW(), INTERVAL '0' HOUR) <= ADDTIME(Datestamp, Timestamp)
  2. 全部从13:00到14:00 DATE_SUB(NOW(), INTERVAL '1' HOUR) <= ADDTIME(Datestamp, Timestamp)

从白天和飞蛾都是一样的,例如,如果当前是2013-01-08,那么我需要计算2013-01-08和2013-01-07

Sal*_*n A 6

以下是如何使用MySQL日期函数创建日期的示例:

SELECT 
    NOW() AS CurrentDateTime, 
    DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00') AS CurrentHour, 
    DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00') - INTERVAL 1 HOUR AS PreviousHour, 
    CURDATE() AS CurrentDate, 
    CURDATE() - INTERVAL 1 DAY AS PreviousDate, 
    DATE_FORMAT(NOW(), '%Y-%m-01') AS CurrentMonth, 
    DATE_FORMAT(NOW(), '%Y-%m-01') - INTERVAL 1 MONTH AS PreviousMonth
Run Code Online (Sandbox Code Playgroud)

输出:

CurrentDateTime: 2013-01-08 21:00:51
    CurrentHour: 2013-01-08 21:00:00
   PreviousHour: 2013-01-08 20:00:00
    CurrentDate: 2013-01-08
   PreviousDate: 2013-01-07
   CurrentMonth: 2013-01-01
  PreviousMonth: 2012-12-01
Run Code Online (Sandbox Code Playgroud)

以下是示例用法:

-- SELECT PREVIOUS HOUR ROWS
SELECT *
FROM table1
WHERE ADDTIME(Datestamp, Timestamp) >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00') - INTERVAL 1 HOUR
AND   ADDTIME(Datestamp, Timestamp) <  DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00')

-- SELECT CURRENT HOUR ROWS
SELECT *
FROM table1
WHERE ADDTIME(Datestamp, Timestamp) >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00')
Run Code Online (Sandbox Code Playgroud)

同样适用于其他情况.