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

Konversi Nomor Bulan ke Nama Bulan di SQL Server (T-SQL)

Anda dapat menggunakan kode T-SQL di bawah ini untuk mengonversi nomor bulan ke nama yang sesuai di SQL Server.

Ini untuk saat-saat di mana Anda tidak benar-benar memiliki tanggal lengkap – ketika yang Anda miliki hanyalah nomor bulan. Jika Anda melakukannya miliki tanggalnya, maka berikut ini cara mendapatkan nama bulan dari tanggal.

Contoh

Anda bisa mendapatkan nama bulan dari nomor yang sesuai dengan menggunakan DATENAME() fungsi bersama dengan DATEADD() .

Berikut adalah contoh yang menggunakan bulan 10 (Oktober):

SELECT DATENAME( 
    month, 
    DATEADD( month , 10, -1 )
    );

Hasil:

October

Penjelasan Kode

Jika Anda bertanya-tanya mengapa ada -1 dalam kode di atas, itu karena tanggal dasarnya adalah 1900-01-01 (well, 1900-01-01 00:00:00.000 tepatnya).

Jika kita menambahkan 10 menjadi 01, maka kita mendapatkan 11, yaitu November (bulan yang salah). Oleh karena itu kita perlu menguranginya dengan 1.

Contoh berikut harus menggambarkan ini lebih baik daripada kata-kata saya. Berikut adalah berbagai DATEADD() nilai yang dikembalikan, tergantung pada apa yang saya gunakan sebagai argumen ketiga.

SELECT 
  DATEADD( month, 0, 0 ) AS [Base Date],
  DATEADD( month, 10, 0 ) AS [Add 10],
  DATEADD( month, 10, -1 ) AS [Subtract 1];

Hasil:

 +-------------------------+-------------------------+-------------------------+
 | Base Date               | Add 10                  | Subtract 1              |
 |-------------------------+-------------------------+-------------------------|
 | 1900-01-01 00:00:00.000 | 1900-11-01 00:00:00.000 | 1900-10-31 00:00:00.000 |
 +-------------------------+-------------------------+-------------------------+ 

Jadi opsi ketiga memberi kita nomor bulan yang benar, dan selanjutnya tinggal menggunakan DATENAME() untuk mengubahnya menjadi nama bulan.

Alternatif:FORMAT()

Jika Anda tidak menyukai DATENAME() fungsi, Anda dapat menukarnya dengan FORMAT() fungsi sebagai gantinya. Konsep yang sama berlaku.

SELECT FORMAT( 
    DATEADD( month , 10, -1 ),
    'MMMM'
    );

Hasil:

October

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa join kiri t-sql saya tidak berfungsi?

  2. sql geografi ke dbgeografi?

  3. Optimalisasi kueri SQL:Praktik terbaik untuk meningkatkan kinerja

  4. Pemicu SQL Server – Bagian 2 Pemicu DDL &LOGON

  5. Forum Kinerja SQL Server Terbaik untuk Bantuan pada Pertanyaan Terberat