如何使用SQL选择过去24小时的记录?

时间:2009-12-11 14:49:03

标签: sql datetime

我正在寻找可用于检索过去24小时记录的where子句?

11 个答案:

答案 0 :(得分:500)

MySQL

SELECT  *
FROM    mytable
WHERE   record_date >= NOW() - INTERVAL 1 DAY

SQL Server

SELECT  *
FROM    mytable
WHERE   record_date >= DATEADD(day, -1, GETDATE())

Oracle

SELECT  *
FROM    mytable
WHERE   record_date >= SYSDATE - 1

PostgreSQL

SELECT  *
FROM    mytable
WHERE   record_date >= NOW() - '1 day'::INTERVAL

Redshift

SELECT  *
FROM    mytable
WHERE   record_date >= GETDATE() - '1 day'::INTERVAL

SQLite

SELECT  *
FROM    mytable
WHERE   record_date >= datetime('now','-1 day')

MS Access

SELECT  *
FROM    mytable
WHERE   record_date >= (Now - 1)

答案 1 :(得分:94)

SELECT * 
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)

答案 2 :(得分:20)

MySQL:

SELECT * 
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)

INTERVAL可以是年,月,日,小时,分钟,第二

例如,在最后10分钟

SELECT * 
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 10 MINUTE)

答案 3 :(得分:8)

未指定哪个SQL,SQL 2005/2008

SELECT yourfields from yourTable WHERE yourfieldWithDate > dateadd(dd,-1,getdate())

如果您使用的是2008年增加的准确度日期类型,那么请使用新的sysdatetime()函数,如果使用UTC时间内部交换到UTC调用,则同样如此。

答案 4 :(得分:7)

在postgres中,假设您的字段类型是时间戳:

  

从表格中选择*,其中date_field> (now() - interval '24 hour');

答案 5 :(得分:4)

如果考虑的时间戳是UNIX时间戳 您需要先将UNIX时间戳(例如1462567865)转换为mysql时间戳或数据

SELECT * FROM `orders` WHERE FROM_UNIXTIME(order_ts) > DATE_SUB(CURDATE(), INTERVAL 1 DAY)

答案 6 :(得分:3)

select ...
from ...
where YourDateColumn >= getdate()-1

答案 7 :(得分:2)

您好,我现在已经过了很长时间,但是我遇到了类似的问题,我想分享。

我有一个日期时间字段,格式为YYYY-MM-DD hh:mm:ss,我想访问一整天,所以这是我的解决方案。

MySQL中的函数DATE():提取日期或日期时间表达式的日期部分。

SELECT * FROM `your_table` WHERE DATE(`your_datatime_field`)='2017-10-09'

用这个我今天得到所有的行记录。

我希望能帮到任何人。

答案 8 :(得分:1)

SELECT * 
FROM tableName 
WHERE datecolumn >= dateadd(hour,-24,getdate())

答案 9 :(得分:1)

在SQL Server中(过去24小时):

SELECT  *
FROM    mytable
WHERE   order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()

答案 10 :(得分:0)

在Oracle中(过去24小时):

Option Explicit

Sub Test()

Dim i As Variant
Dim rng1 As Range
Dim rng2 As Range
Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets(1)

Set rng1 = ws.Range("af10")
Set rng2 = ws.Range("af11:af27")

rng1.Copy

rng2.PasteSpecial xlPasteFormulas

End Sub

万一出于某种原因,如果您有带有未来日期的行,则可以使用之间的,如下所示:

SELECT  *
FROM    my_table
WHERE   date_column >= SYSDATE - 24/24