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.