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

Mik*_*ike 175 sql datetime

我正在寻找一个where可用于检索过去24小时记录的条款?

Qua*_*noi 530

MySQL:

SELECT  *
FROM    mytable
WHERE   record_date >= NOW() - INTERVAL 1 DAY
Run Code Online (Sandbox Code Playgroud)

SQL Server:

SELECT  *
FROM    mytable
WHERE   record_date >= DATEADD(day, -1, GETDATE())
Run Code Online (Sandbox Code Playgroud)

Oracle:

SELECT  *
FROM    mytable
WHERE   record_date >= SYSDATE - 1
Run Code Online (Sandbox Code Playgroud)

PostgreSQL:

SELECT  *
FROM    mytable
WHERE   record_date >= NOW() - '1 day'::INTERVAL
Run Code Online (Sandbox Code Playgroud)

Redshift:

SELECT  *
FROM    mytable
WHERE   record_date >= GETDATE() - '1 day'::INTERVAL
Run Code Online (Sandbox Code Playgroud)

SQLite:

SELECT  *
FROM    mytable
WHERE   record_date >= datetime('now','-1 day')
Run Code Online (Sandbox Code Playgroud)

MS Access:

SELECT  *
FROM    mytable
WHERE   record_date >= (Now - 1)
Run Code Online (Sandbox Code Playgroud)

  • 我尝试查询mysql但是如果它的2AM,例如,我从00 - 02 AM获得记录.两个小时而不是24个.任何想法? (2认同)

Gui*_*dre 96

SELECT * 
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
Run Code Online (Sandbox Code Playgroud)

  • 如果要从datetime字段中选择最近24小时,请将'curate()'替换为'now()'.这还包括时间. (17认同)
  • 如果记录存储为"DATETIME",则将选择上一个日期的所有记录,而忽略时间部分.已经在`23:59:59`运行,查询将返回最后48小时的所有记录,而不是'24`. (4认同)

Kar*_*pal 20

MySQL:

SELECT * 
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)
Run Code Online (Sandbox Code Playgroud)

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

例如,在最后10分钟

SELECT * 
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 10 MINUTE)
Run Code Online (Sandbox Code Playgroud)

  • 这是最能回答特定问题的答案:如何返回前24小时(从现在开始),而不是之前的24小时(这表明前一天的所有结果).这满足了我的要求,这得到了我的支持.编辑:值得一提的是table_name.the_date列应该是一个时间戳. (2认同)

And*_*rew 8

SQL 2005/2008中未指定哪个SQL

SELECT yourfields from yourTable WHERE yourfieldWithDate > dateadd(dd,-1,getdate())
Run Code Online (Sandbox Code Playgroud)

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


pis*_*ruk 7

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

select*from table where date_field>(now() - interval '24 hour');