Câu trả lời:
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
DATETIME
, điều này sẽ chọn tất cả các bản ghi từ ngày trước đó, bỏ qua phần thời gian. Được chạy tại 23:59:59
, truy vấn sẽ trả về tất cả các hồ sơ cho những 48
giờ cuối cùng , không 24
.
Trong MySQL
:
SELECT *
FROM mytable
WHERE record_date >= NOW() - INTERVAL 1 DAY
Trong SQL Server
:
SELECT *
FROM mytable
WHERE record_date >= DATEADD(day, -1, GETDATE())
Trong Oracle
:
SELECT *
FROM mytable
WHERE record_date >= SYSDATE - 1
Trong PostgreSQL
:
SELECT *
FROM mytable
WHERE record_date >= NOW() - '1 day'::INTERVAL
Trong Redshift
:
SELECT *
FROM mytable
WHERE record_date >= GETDATE() - '1 day'::INTERVAL
Trong SQLite
:
SELECT *
FROM mytable
WHERE record_date >= datetime('now','-1 day')
Trong MS Access
:
SELECT *
FROM mytable
WHERE record_date >= (Now - 1)
function getdate() does not exist
. Thay thế nó current_date
và nó hoạt động tốt.
CURDATE()
không trả về một ngày với một phần thời gian, vì vậy nó đi đến 00
. Tôi đã sửa nó bằng cách sử dụng NOW()
thay vì CURDATE()
.
MySQL:
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)
INTERVAL có thể vào NĂM, THÁNG, NGÀY, GIỜ, PHÚT, THỨ HAI
Ví dụ: trong 10 phút qua
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 10 MINUTE)
SQL nào không được chỉ định, SQL 2005/2008
SELECT yourfields from yourTable WHERE yourfieldWithDate > dateadd(dd,-1,getdate())
Nếu bạn đang sử dụng loại ngày chính xác tăng 2008, thì hãy sử dụng hàm sysdatetime () mới, bằng nhau nếu sử dụng thời gian UTC hoán đổi nội bộ sang các cuộc gọi UTC.
Nếu dấu thời gian được xem là dấu thời gian UNIX Trước tiên, bạn cần chuyển đổi dấu thời gian UNIX (ví dụ: 1462567865) sang dấu thời gian hoặc dữ liệu 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)
Nếu bạn cần độ chính xác mili giây trong SQL Server 2016 và sau đó sử dụng: SELECT DATEDIFF_BIG(millisecond, '1970-01-01 00:00:00', DateField)
select ...
from ...
where YourDateColumn >= getdate()-1
Xin chào tôi bây giờ nó đã qua rất nhiều thời gian từ bài viết gốc nhưng tôi đã gặp một vấn đề tương tự và tôi muốn chia sẻ.
Tôi đã nhận được một trường datetime với định dạng này YYYY-MM-DD hh: mm: ss và tôi muốn truy cập cả ngày, vì vậy đây là giải pháp của tôi.
Hàm DATE (), trong MySQL: Trích xuất phần ngày của biểu thức ngày hoặc ngày.
SELECT * FROM `your_table` WHERE DATE(`your_datatime_field`)='2017-10-09'
với điều này tôi nhận được tất cả các đăng ký hàng trong ngày này.
Tôi hy vọng nó sẽ giúp bất cứ ai.
Trong SQL Server (Trong 24 giờ qua):
SELECT *
FROM mytable
WHERE order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()