Masalah:
Anda ingin mendapatkan tanggal 30 hari sebelum tanggal tertentu di T-SQL.
Contoh:
Basis data kami memiliki tabel bernama Computer
dengan data di kolom Id
, Name
, dan PurchaseDate
.
Id | Nama | Tanggal Pembelian |
---|---|---|
1 | Sony GX1000 | 20-01-2019 |
2 | Samsung LX2000 | 15-04-2019 |
3 | Dell K80 | 30-08-2019 |
Mari kita dapatkan nama masing-masing komputer dan tanggal 30 hari sebelum tanggal pembeliannya.
Solusi:
Kami akan menggunakan fungsi DATEADD() untuk mengurangi jumlah hari tertentu dari sebuah tanggal.
SELECT Name, DATEADD(day, -30, PurchaseDate) AS BeforePurchaseDate; FROM Computer;
Berikut hasil querynya:
Nama | SebelumTanggalPembelian |
---|---|
Sony GX1000 | 21-12-21 |
Samsung LX2000 | 16-03-2019 |
Dell K80 | 31-07-2019 |
Diskusi:
Jika Anda ingin mengurangi tanggal atau waktu di SQL Server, gunakan DATEADD()
fungsi. Dibutuhkan tiga argumen. Argumen pertama adalah unit tanggal/waktu – dalam contoh kita, kita menentukan hari satuan.
Berikutnya adalah unit tanggal atau waktu nilai . Dalam contoh kita, ini adalah -30 , karena kami mengambil waktu 30 hari dari tanggal saat ini. Ingat bahwa minus menunjukkan pengurangan nilai; tanpa tanda ini, Anda menambahkan ke tanggal yang diberikan.
Argumen terakhir adalah tanggal kami beroperasi; ini bisa berupa kolom tanggal/waktu/datetime atau ekspresi apa pun yang mengembalikan tanggal atau waktu. Dalam contoh kami, kami menggunakan PurchaseDate
, date
kolom.
Fungsi mengembalikan tanggal yang diubah. Dalam contoh kami, kueri untuk komputer bernama 'Dell K80'
mengembalikan tanggal baru di BeforePurchaseDate
kolom. Tanggal asli '2019-08-30'
diubah menjadi tanggal dari 30 hari yang lalu:'2018-07-31'
.
Anda dapat menggunakan DATEADD()
fungsi untuk semua tipe data tanggal dan waktu.