Jawaban:
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
DATETIME
, ini akan memilih semua catatan dari tanggal sebelumnya, mengabaikan bagian waktu. Telah dijalankan pada 23:59:59
, kueri akan mengembalikan semua catatan selama beberapa 48
jam terakhir , bukan 24
.
Di MySQL
:
SELECT *
FROM mytable
WHERE record_date >= NOW() - INTERVAL 1 DAY
Di SQL Server
:
SELECT *
FROM mytable
WHERE record_date >= DATEADD(day, -1, GETDATE())
Di Oracle
:
SELECT *
FROM mytable
WHERE record_date >= SYSDATE - 1
Di PostgreSQL
:
SELECT *
FROM mytable
WHERE record_date >= NOW() - '1 day'::INTERVAL
Di Redshift
:
SELECT *
FROM mytable
WHERE record_date >= GETDATE() - '1 day'::INTERVAL
Di SQLite
:
SELECT *
FROM mytable
WHERE record_date >= datetime('now','-1 day')
Di MS Access
:
SELECT *
FROM mytable
WHERE record_date >= (Now - 1)
function getdate() does not exist
. Menggantinya dengan current_date
dan itu berfungsi dengan baik.
CURDATE()
tidak mengembalikan tanggal dengan porsi waktu, begitu seterusnya 00
. Saya memperbaikinya dengan menggunakan NOW()
bukan CURDATE()
.
MySQL:
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)
INTERVAL dapat dalam TAHUN, BULAN, HARI, JAM, MENIT, DETIK
Misalnya, dalam 10 menit terakhir
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 10 MINUTE)
SQL mana yang tidak ditentukan, SQL 2005/2008
SELECT yourfields from yourTable WHERE yourfieldWithDate > dateadd(dd,-1,getdate())
Jika Anda menggunakan tipe tanggal akurasi meningkat 2008, maka gunakan fungsi sysdatetime () baru, sama-sama jika menggunakan waktu UTC secara internal bertukar ke panggilan UTC.
Jika cap waktu yang dianggap sebagai cap waktu UNIX, Anda harus terlebih dahulu mengonversi cap waktu UNIX (mis. 1462567865) menjadi stempel waktu mysql atau data
SELECT * FROM `orders` WHERE FROM_UNIXTIME(order_ts) > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
SELECT DATEDIFF(s, '1970-01-01 00:00:00', DateField)
Jika Anda membutuhkan akurasi milidetik di SQL Server 2016 dan yang lebih baru digunakan: SELECT DATEDIFF_BIG(millisecond, '1970-01-01 00:00:00', DateField)
select ...
from ...
where YourDateColumn >= getdate()-1
Halo saya sekarang melewati banyak waktu dari posting asli tetapi saya punya masalah yang sama dan saya ingin berbagi.
Saya mendapat bidang datetime dengan format ini YYYY-MM-DD hh: mm: ss, dan saya ingin mengakses sepanjang hari, jadi inilah solusi saya.
Fungsi DATE (), di MySQL: Ekstrak bagian tanggal dari ekspresi tanggal atau datetime.
SELECT * FROM `your_table` WHERE DATE(`your_datatime_field`)='2017-10-09'
dengan ini saya mendapatkan semua daftar baris pada hari ini.
Saya harap ini membantu siapa pun.
SELECT *
FROM tableName
WHERE datecolumn >= dateadd(hour,-24,getdate())
Dalam SQL Server (Untuk 24 jam terakhir):
SELECT *
FROM mytable
WHERE order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()