Cara mendapatkan data 30 hari terakhir dari tanggal hari ini di SQL server

pemrograman

[ad_1]

saya harus mencatat semua baris dari 30 terakhir hingga hari ini. saya sudah mencoba ini tetapi tidak berhasil

Apa yang saya coba:

pilih tanggal_waktu dari dsr_data di mana tanggal_waktu >= CONVERT(Varchar(100), DATEADD(DAY,-30,GETDATE()),103) dan tanggal_waktu <= CONVERT(varchar(100), getdate(),103)

Solusi 3

SELECT date_time  FROM dsr_data
    WHERE date_time
               between DATEADD(DAY,-30,GETDATE()) and  GETDATE(); 

Solusi 1

Mengapa Anda menggunakan CONVERT?
Satu-satunya alasan yang mungkin adalah alasan yang sama mengapa hal itu tidak berhasil: Anda menyimpan tanggal sebagai kolom NVARCHAR, bukan DATE, DATETIME, atau DATETIME2.

Saat Anda membandingkan string, perbandingannya sepenuhnya didasarkan pada karakter pertama yang berbeda dalam dua string: dan karena Anda secara khusus memilih untuk memformat tanggal dalam format 103, yaitu “dd/MM/yyyy”, perbandingannya akan menjadi sampah total – misalnya tahun akan diperiksa terakhir, jadi 31/01/2017 adalah sebelum 31/12/1952 karena perbandingannya akan didasarkan pada digit pertama bulan tersebut, dan ‘0’ kurang dari ‘1’

Ubah basis data Anda. Selalu simpan data dalam tipe data yang sesuai: artinya nilai integer di kolom INT, informasi tanggal di kolom DATE, DATETIME, atau DATETIME2, dan seterusnya. Jika tidak, ini hanyalah awal dari sekian banyak masalah buruk dan buruk yang menunggu untuk menimpa Anda…

Solusi 2

Gunakan kueri di bawah ini.

SELECT date_time  FROM  dsr_data
WHERE date_time  >= DATEADD(day,-30, getdate()) 
and   date_time  <= getdate()

[ad_2]

コメント

タイトルとURLをコピーしました