Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara mendapatkan satu bulan yang lalu dari hari ini di SQL Server 2008?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Terhubung ke SQL Server dari Linux melalui JDBC menggunakan IntegratedSecurity (otentikasi Windows)?

  2. Memahami perbedaan antara CUBE dan ROLLUP

  3. Partisi berdasarkan Tahun vs. tabel terpisah bernama Data_2011, Data_2010, dll

  4. Menerapkan Beban Tambahan menggunakan Ubah Pengambilan Data di SQL Server

  5. Beberapa berita bagus untuk pelanggan Edisi Standar di SQL Server 2014