Saya mencari Pernyataan SQL yang bagus untuk memilih semua baris dari hari sebelumnya dari satu tabel. Tabel tersebut memiliki satu kolom datetime. Saya menggunakan SQL Server 2005.
sql
sql-server
sql-server-2005
rudimenter
sumber
sumber
SELECT *
akan mengembalikan tanggal dengan waktu aslinya.SELECT getdate(),dateadd(day,datediff(day,1,GETDATE()),0)
saya mendapatkan:2016-02-01 10:27:54.733 2016-01-31 00:00:00.000
Untuk mendapatkan nilai "hari ini" di SQL:
Untuk mendapatkan "kemarin":
Untuk mendapatkan "hari ini dikurangi X hari": ubah -1 menjadi -X.
Jadi untuk semua baris kemarin, Anda mendapatkan:
sumber
Sepertinya jawaban yang jelas hilang. Untuk mendapatkan semua data dari tabel (Ttable) di mana kolom (DatetimeColumn) adalah datetime dengan stempel waktu, kueri berikut dapat digunakan:
Ini dapat dengan mudah diubah menjadi hari ini, bulan lalu, tahun lalu, dll.
sumber
DatetimeColumn BETWEEN DATEADD(day, DATEDIFF(day, 1, GETDATE()) ,0) AND DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
karena harus mengevaluasi DATEDIFF () pada setiap barissumber
Ini adalah utas yang sangat tua, tapi inilah pendapat saya. Daripada 2 klausa yang berbeda, satu lebih besar dari dan kurang dari. Saya menggunakan sintaks di bawah ini untuk memilih catatan dari tanggal A. Jika Anda menginginkan rentang tanggal maka jawaban sebelumnya adalah cara yang tepat.
Dalam kasus di atas, X akan menjadi -1 untuk catatan kemarin
sumber
Tidak dapat mengujinya sekarang, tetapi:
sumber
Ini harus melakukannya:
sumber
Di SQL Server, lakukan seperti ini:
Anda harus mentransmisikan kedua sisi ekspresi hingga saat ini untuk menghindari masalah dengan pemformatan waktu.
Jika Anda perlu mengontrol interval lebih detail, maka Anda harus mencoba sesuatu seperti:
sumber
Cara lain untuk mengatakannya "Kemarin" ...
Ini mungkin tidak akan bekerja dengan baik pada tanggal 1 Januari, dan juga pada hari pertama setiap bulan. Tapi dengan cepat itu efektif.
sumber
Nah, lebih mudah untuk mentransmisikan kolom tanggal waktu ke tanggal dan daripada membandingkan.
sumber
subdate (now (), 1) akan mengembalikan cap waktu kemarin Kode di bawah ini akan memilih semua baris dengan cap waktu kemarin
sumber