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

Buat tanggal dari hari bulan dan tahun dengan T-SQL

Coba ini:

Declare @DayOfMonth TinyInt Set @DayOfMonth = 13
Declare @Month TinyInt Set @Month = 6
Declare @Year Integer Set @Year = 2006
-- ------------------------------------
Select DateAdd(day, @DayOfMonth - 1, 
          DateAdd(month, @Month - 1, 
              DateAdd(Year, @Year-1900, 0)))

Ini juga berfungsi, telah menambahkan manfaat dari tidak melakukan konversi string apa pun, jadi ini adalah pemrosesan aritmatika murni (sangat cepat) dan tidak bergantung pada format tanggal apa pun. Ini memanfaatkan fakta bahwa representasi internal SQL Server untuk nilai datetime dan smalldatetime adalah dua bagian nilai bagian pertama yang merupakan bilangan bulat yang mewakili jumlah hari sejak 1 Jan 1900, dan bagian kedua adalah pecahan desimal yang mewakili bagian pecahan satu hari (untuk waktu) --- Jadi nilai bilangan bulat 0 (nol) selalu diterjemahkan langsung ke tengah malam pagi 1 Jan 1900...

atau, terima kasih atas saran dari @brinary,

Select DateAdd(yy, @Year-1900,  
       DateAdd(m,  @Month - 1, @DayOfMonth - 1)) 

Diedit Oktober 2014. Seperti yang dicatat oleh @cade Roux, SQL 2012 sekarang memiliki fungsi bawaan:
DATEFROMPARTS(year, month, day)
yang melakukan hal yang sama.

Diedit 3 Okt 2016, (Terima kasih kepada @bambams untuk memperhatikan ini, dan @brinary untuk memperbaikinya), Solusi terakhir, diusulkan oleh @brinary. tampaknya tidak berfungsi untuk tahun kabisat kecuali jika penambahan tahun dilakukan terlebih dahulu

select dateadd(month, @Month - 1, 
     dateadd(year, @Year-1900, @DayOfMonth - 1)); 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Log Transaksi SQL Server, Bagian 1:Dasar-dasar Pencatatan

  2. Bagaimana cara menggunakan variabel untuk nama database di T-SQL?

  3. Bagaimana cara menyalin database SQL Azure ke server pengembangan lokal saya?

  4. Bagaimana menjalankan kueri yang sama pada semua database pada sebuah instance?

  5. Kinerja SQL Server TOP IO Query -1