DATENAME (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Fungsi ini mengembalikan string karakter yang mewakili bagian tanggal yang ditentukan dari tanggal yang ditentukan.

Lihat Jenis dan Fungsi Data Tanggal dan Waktu (Transact-SQL) untuk gambaran umum semua jenis dan fungsi data tanggal dan waktu Transact-SQL.

Konvensi sintaks transact-SQL

Sintaksis

DATENAME ( datepart , date )  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

datepart
Bagian spesifik dari argumen tanggal yang DATENAME akan ditampilkan. Tabel ini mencantumkan semua argumen datepart yang valid.

Catatan

DATENAME tidak menerima variabel yang ditentukan pengguna yang setara untuk argumen datepart .

datepart Singkatan
Tahun yy, yyyy
kuartal qq, q
Bulan mm, m
dayofyear dy, y
hari dd, d
minggu wk, ww
hari kerja dw, w
jam hh
menit mi, n
detik ss, s
milidetik ms
mikrosecond Mcs
nanodetik Ns
TZoffset Tz
ISO_WEEK ISOWK, ISOWW

date

Ekspresi yang dapat mengatasi salah satu jenis data berikut:

  • date
  • datetime
  • datetimeoffset
  • datetime2
  • smalldatetime
  • time

Untuk tanggal, DATENAME akan menerima ekspresi kolom, ekspresi, string literal, atau variabel yang ditentukan pengguna. Gunakan empat digit tahun untuk menghindari masalah ambiguitas. Lihat Mengonfigurasi Opsi Konfigurasi Server cutoff dua digit tahun untuk informasi tentang tahun dua digit.

Jenis Hasil

nvarchar

Tampilkan Nilai

  • Setiap datepart dan singkatannya mengembalikan nilai yang sama.

Nilai pengembalian tergantung pada lingkungan bahasa yang ditetapkan dengan menggunakan SET LANGUAGE, dan dengan Opsi Konfigurasi Server bahasa default dari login. Nilai yang dikembalikan bergantung pada SET DATEFORMAT jika tanggal adalah literal string dari beberapa format. SET DATEFORMAT tidak mengubah nilai pengembalian saat tanggal adalah ekspresi kolom dari tipe data tanggal atau waktu.

Ketika parameter tanggal memiliki argumen jenis data tanggal, nilai pengembalian bergantung pada pengaturan yang ditentukan oleh SET DATEFIRST.

Argumen datepart TZoffset

Jika argumen datepart adalah TZoffset (tz) dan argumen tanggal tidak memiliki offset zona waktu, DATEADD mengembalikan 0.

Argumen tanggal smalldatetime

Ketika tanggal adalah smalldatetime, DATENAME mengembalikan detik sebagai 00.

Default Dikembalikan untuk datepart Yang Tidak ada dalam Argumen tanggal

Jika tipe data argumen tanggal tidak memiliki datepart yang ditentukan, DATENAME akan mengembalikan default untuk datepart tersebut hanya jika argumen tanggal memiliki literal .

Misalnya, hari bulan tahun default untuk jenis data tanggal apa pun adalah 1900-01-01. Pernyataan ini memiliki argumen bagian tanggal untuk datepart, argumen waktu untuk tanggal, dan DATENAME mengembalikan 1900, January, 1, 1, Monday.

SELECT DATENAME(year, '12:10:30.123')  
    ,DATENAME(month, '12:10:30.123')  
    ,DATENAME(day, '12:10:30.123')  
    ,DATENAME(dayofyear, '12:10:30.123')  
    ,DATENAME(weekday, '12:10:30.123');  

Jika tanggal ditentukan sebagai variabel atau kolom tabel, dan jenis data untuk variabel atau kolom tersebut tidak memiliki datepart yang ditentukan, DATENAME akan mengembalikan kesalahan 9810. Dalam contoh ini, variabel @t memiliki jenis data waktu . Contoh gagal karena tanggal bagian tahun tidak valid untuk jenis data waktu :

DECLARE @t time = '12:10:30.123';   
SELECT DATENAME(year, @t);  

Keterangan

Gunakan DATENAME dalam klausa berikut:

  • GROUP BY
  • MEMILIKI
  • ORDER BY
  • DAFTAR SELECT <>
  • WHERE

Di SQL Server, DATENAME secara implisit melemparkan literal string sebagai jenis datetime2 . Dengan kata lain, DATENAME tidak mendukung format YDM saat tanggal diteruskan sebagai string. Anda harus secara eksplisit mentransmisikan string ke jenis datetime atau smalldatetime untuk menggunakan format YDM.

Contoh

Contoh ini mengembalikan bagian tanggal untuk tanggal yang ditentukan. Ganti nilai datepart dari tabel untuk datepart argumen dalam pernyataan SELECT:

SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');

Berikut adalah hasil yang ditetapkan.

datepart Nilai hasil
tahun, yyyy, yy 2007
kuartal, qq, q 4
bulan, mm, m Oktober
dayofyear, dy, y 303
hari, dd, d 30
minggu, wk, ww 44
hari kerja, dw Selasa
jam, hh 12
menit, n 15
kedua, ss, s 32
milidetik, ms 123
microsecond, mcs 123456
nanodetik, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Azure Synapse Analytics and Analytics Platform System (PDW)

Contoh ini mengembalikan bagian tanggal untuk tanggal yang ditentukan. Ganti nilai datepart dari tabel untuk datepart argumen dalam pernyataan SELECT:

SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');  

Berikut adalah hasil yang ditetapkan.

datepart Nilai hasil
tahun, yyyy, yy 2007
kuartal, qq, q 4
bulan, mm, m Oktober
dayofyear, dy, y 303
hari, dd, d 30
minggu, wk, ww 44
hari kerja, dw Selasa
jam, hh 12
menit, n 15
kedua, ss, s 32
milidetik, ms 123
microsecond, mcs 123456
nanodetik, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Baca juga

CAST dan CONVERT (Transact-SQL)