13

因此,为了获得最近 24 小时的查询,我使用类似这样的东西

SELECT COUNT(*) AS cnt FROM `mytable` WHERE timestamp >= DATE_SUB(NOW(), INTERVAL 1 DAY)

wheretimestamp是带有时间戳的表字段。

但是我怎样才能得到2天前和昨天之间的间隔。所以

今天是 24 岁。我想在 22 ian (00:00am) 和 23 ian (00:00am) 之间查询

4

5 回答 5

28
WHERE timestamp BETWEEN 
        DATE_SUB(DATE(NOW()), INTERVAL 2 DAY)
         AND DATE_SUB(DATE(NOW()), INTERVAL 1 DAY) 
于 2013-01-24T09:18:28.127 回答
5

您也可以尝试DATE_ADD使用负间隔;)

WHERE timestamp BETWEEN 
        DATE_ADD(DATE(NOW()), INTERVAL -2 DAY)
         AND DATE_ADD(DATE(NOW()), INTERVAL -1 DAY) 
于 2013-01-24T09:54:59.063 回答
3

利用Interval

WHERE `timestamp`
    BETWEEN DATE_SUB(NOW(), INTERVAL 2 DAY)
    AND DATE_SUB(NOW(), INTERVAL 1 DAY)
于 2013-01-24T09:19:32.017 回答
2

如果您想在 1 月 22 日(上午 00:00)和 1 月 22 日(晚上 11:59)之间进行查询

where DATE(timestamp) = DATE_SUB(DATE(now()), INTERVAL  2 day);

示例:timestamp = 2020-02-24 12:07:19 并且 Date(timestamp) 是 2020-02-24 并且now()输出是当前日期和我们使用的时间,DATE(now())然后输出是 Date only,

DATE_SUB(DATE(now()), INTERVAL  2 day)

将是 2 天前。

于 2020-02-27T06:47:16.477 回答
1

试试BETWEEN::

SELECT 
COUNT(*) AS cnt 

FROM `mytable` 

WHERE timestamp BETWEEN DATE_SUB(NOW(), INTERVAL 2 DAY) and DATE_SUB(NOW(), INTERVAL 1 DAY)
于 2013-01-24T09:20:47.380 回答