如何使用SQLselect最近24小时的logging?
我正在寻找一个可以用来检索过去24小时logging的where
子句?
SELECT * FROM table_name WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
在MySQL
:
SELECT * FROM mytable WHERE record_date >= CURDATE() - 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)
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)
哪个SQL没有被指定,SQL 2005/2008
SELECT yourfields from yourTable WHERE yourfieldWithDate > dateadd(dd,-1,getdate())
如果您使用的是2008年增加的准确性datetypes,则可以使用新的sysdatetime()函数,而如果使用UTC时间在内部交换到UTC调用时也是如此。
在postgres中,假设你的字段types是一个时间戳:
select * from table where date_field>(now() – interval '24 hour');
select ... from ... where YourDateColumn >= getdate()-1
如果所考虑的时间戳是UNIX时间戳,则需要先将UNIX时间戳(例如1462567865)转换为mysql时间戳或数据
SELECT * FROM `orders` WHERE FROM_UNIXTIME(order_ts) > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
SELECT * FROM tableName WHERE datecolumn >= dateadd(hour,-24,getdate())
在SQL Server中(最近24小时):
SELECT * FROM mytable WHERE order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()
你好我现在从原来的post过去了很多时间,但我有一个类似的问题,我想分享。
我有这种格式YYYY-MM-DD hh:mm:ss的date时间字段,我想访问一整天,所以这里是我的解决scheme。
MySQL中的函数DATE():提取date或date时间expression式的date部分。
SELECT * FROM `your_table` WHERE DATE(`your_datatime_field`)='2017-10-09'
在这一天,我得到了所有的行登记。
我希望它帮助任何人。