在MySQL中获取时间间隔

11

有没有查询可以让我获取时间间隔-一分钟,五分钟,15分钟,半小时,一小时和一天?我使用MySQL作为数据库。


1
你是什么意思说“获取时间间隔”?这些表看起来像什么? - AwokeKnowing
他们可能是指“2天前”或类似的时间。 - gloomy.penguin
是的,就像那样,就像一个小时前,一个小时前的值是什么。就像这样。在桌子上,我有ID、时间戳,以及值。 - hearmeroar
2个回答

12

要获取一个范围,例如从30分钟到45分钟之前,请这样做

SELECT * FROM tbl 
WHERE tbl.mydate > DATE(DATE_sub(NOW(), INTERVAL 45 MINUTE)) 
AND tbl.mydate < DATE(DATE_sub(NOW(), INTERVAL 30 MINUTE));

你需要从Where子句中删除DATE(),否则它不会按分钟范围进行计算,而只会按天数计算。 我知道这是几年前的事情了,但我一直在尝试找出为什么这对我不起作用,并且可能有助于其他人在他们自己的代码中使用此答案。 - schofs

7

您可能在寻找date_sub函数:

SELECT * FROM YOURTABLE t
WHERE t.timestamp > date_sub(NOW(), interval 1 hour);

对于不同的时间间隔,您可以将1小时更改为5天、5周等。

根据文档:

DATE_SUB(date,INTERVAL expr unit)

date参数指定起始日期或datetime值。expr是一个表达式,指定要从起始日期中添加或减去的时间间隔值。expr是一个字符串;它可以以“-”开头表示负间隔。unit是一个关键字,表示应以何种单位解释表达式。

以下表格显示了每个单位值的expr参数的预期形式。

unit Value     Expected expr Format

MICROSECOND    MICROSECONDS
SECOND         SECONDS
MINUTE         MINUTES
HOUR           HOURS
DAY            DAYS
WEEK           WEEKS
MONTH          MONTHS
QUARTER        QUARTERS
YEAR           YEARS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接