Answers:
在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)
function getdate() does not exist
。替换为它,current_date
效果很好。
CURDATE()
似乎没有返回带有时间部分的日期,因此转到00
。我使用NOW()
代替修复了它CURDATE()
。
MySQL的:
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)
间隔可以是YEAR,MONTH,DAY,HOUR,MINUTE,SECOND
例如,在最近的10分钟内
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 10 MINUTE)
如果考虑的时间戳是UNIX时间戳,则需要先将UNIX时间戳(例如1462567865)转换为mysql时间戳或数据。
SELECT * FROM `orders` WHERE FROM_UNIXTIME(order_ts) > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
SELECT DATEDIFF(s, '1970-01-01 00:00:00', DateField)
如果您需要SQL Server 2016和更高版本中的毫秒精度,请使用: SELECT DATEDIFF_BIG(millisecond, '1970-01-01 00:00:00', DateField)
select ...
from ...
where YourDateColumn >= getdate()-1
您好,我现在距原始帖子已经过去了很多时间,但是我遇到了类似的问题,我想分享一下。
我有一个格式为YYYY-MM-DD hh:mm:ss的日期时间字段,我想访问一整天,所以这是我的解决方案。
MySQL中的函数DATE():提取日期或日期时间表达式的日期部分。
SELECT * FROM `your_table` WHERE DATE(`your_datatime_field`)='2017-10-09'
这样我就可以在这一天得到所有的行寄存器。
希望对任何人有帮助。
在SQL Server中(过去24小时):
SELECT *
FROM mytable
WHERE order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()