Di SQL Server 2008 ada date
tipe data, yang tidak memiliki waktu terlampir. Dengan demikian Anda dapat menghapus porsi waktu dengan cukup mudah hanya dengan mengonversi, lalu melakukan DateAdd
.
SELECT DateAdd(month, -1, Convert(date, GetDate()));
Ini akan mengembalikan date
tipe data. Untuk memaksanya menjadi datetime
lagi, Anda cukup menambahkan satu lagi Convert
:
SELECT Convert(datetime, DateAdd(month, -1, Convert(date, GetDate())));
Anda mungkin tidak memerlukan konversi eksplisit ke datetime
, meskipun.
Catatan:"Satu bulan yang lalu dari hari ini" dapat didefinisikan dengan berbagai cara. Cara kerjanya di SQL server adalah mengembalikan hari dari bulan sebelumnya yang paling dekat dengan nomor hari yang sama dengan bulan sekarang. Ini berarti bahwa hasil dari ekspresi ini ketika dijalankan pada tanggal 31 Maret akan menjadi 28 Februari. Jadi, Anda mungkin tidak mendapatkan hasil yang diharapkan dalam skenario tertentu jika Anda tidak berpikir jernih tentang konsekuensinya, seperti jika Anda melakukan satu- perhitungan bulan beberapa kali, mengharapkan untuk mendapatkan hari yang sama di bulan yang berbeda (seperti melakukan Maret -> Februari -> Januari).
Lihat demo langsung di SQL Fiddle
Demo menunjukkan nilai dan tipe data yang dihasilkan dari setiap ekspresi.