Reputation: 4291
I am looking for a where
clause that can be used to retrieve records for the last 24 hours?
Upvotes: 244
Views: 464972
Reputation: 425251
In MySQL
:
SELECT *
FROM mytable
WHERE record_date >= NOW() - INTERVAL 1 DAY
In SQL Server
:
SELECT *
FROM mytable
WHERE record_date >= DATEADD(day, -1, GETDATE())
In Oracle
:
SELECT *
FROM mytable
WHERE record_date >= SYSDATE - 1
In PostgreSQL
:
SELECT *
FROM mytable
WHERE record_date >= NOW() - '1 day'::INTERVAL
In Redshift
:
SELECT *
FROM mytable
WHERE record_date >= GETDATE() - '1 day'::INTERVAL
In SQLite
:
SELECT *
FROM mytable
WHERE record_date >= datetime('now','-1 day')
In MS Access
:
SELECT *
FROM mytable
WHERE record_date >= (Now - 1)
In Snowflake
SELECT *
FROM mytable
WHERE record_date >= DATEADD(hour, -24, CURRENT_TIMESTAMP);
Upvotes: 727
Reputation: 1
Someone might need this as it is my case. If you want to select a record after 24 hours, you can change the >=
to <=
For example: In MySQL will be:
SELECT *
FROM mytable
WHERE record_date <= NOW() - INTERVAL 1 DAY
Upvotes: 0
Reputation: 59
In Oracle (For last 24 hours):
SELECT *
FROM my_table
WHERE date_column >= SYSDATE - 24/24
In case, for any reason, you have rows with future dates, you can use between, like this:
SELECT *
FROM my_table
WHERE date_column BETWEEN (SYSDATE - 24/24) AND SYSDATE
Upvotes: 0
Reputation: 73
Hello i now it past a lot of time from the original post but i got a similar problem and i want to share.
I got a datetime field with this format YYYY-MM-DD hh:mm:ss, and i want to access a whole day, so here is my solution.
The function DATE(), in MySQL: Extract the date part of a date or datetime expression.
SELECT * FROM `your_table` WHERE DATE(`your_datatime_field`)='2017-10-09'
with this i get all the row register in this day.
I hope its help anyone.
Upvotes: 2
Reputation: 674
If the timestamp considered is a UNIX timestamp You need to first convert UNIX timestamp (e.g 1462567865) to mysql timestamp or data
SELECT * FROM `orders` WHERE FROM_UNIXTIME(order_ts) > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
Upvotes: 4
Reputation: 575
MySQL :
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)
The INTERVAL can be in YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
For example, In the last 10 minutes
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 10 MINUTE)
Upvotes: 24
Reputation: 774
in postgres, assuming your field type is a timestamp:
select * from table where date_field > (now() - interval '24 hour');
Upvotes: 7
Reputation: 55
In SQL Server (For last 24 hours):
SELECT *
FROM mytable
WHERE order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()
Upvotes: 1
Reputation: 8980
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
Upvotes: 107
Reputation: 27294
Which SQL was not specified, SQL 2005 / 2008
SELECT yourfields from yourTable WHERE yourfieldWithDate > dateadd(dd,-1,getdate())
If you are on the 2008 increased accuracy date types, then use the new sysdatetime() function instead, equally if using UTC times internally swap to the UTC calls.
Upvotes: 8
Reputation: 42227
SELECT *
FROM tableName
WHERE datecolumn >= dateadd(hour,-24,getdate())
Upvotes: 2