DATENAME (transact-SQL)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics Platform 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 (SQL Transact) untuk gambaran umum semua jenis dan fungsi data tanggal dan waktu transact-SQL.

Topic link iconKonvensi Sintaksis T-SQL

Sintaks

DATENAME ( datepart , date )  

Catatan

Untuk melihat sintaks transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

datepart
Bagian tertentu dari argumen tanggal yang DATENAME akan dikembalikan. 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 bisa 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 dua digit tahun.

Jenis Hasil

nvarchar

Tampilkan Nilai

  • Setiap datepart dan singkatannya mengembalikan nilai yang sama.

Nilai yang dikembalikan bergantung 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 yang dikembalikan saat tanggal adalah ekspresi kolom dari jenis data tanggal atau waktu.

Ketika parameter tanggal memiliki argumen jenis data tanggal , nilai yang dikembalikan 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

Saat 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 harfiah .

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:

  • KELOMPOKKAN MENURUT
  • HAVING
  • URUTKAN MENURUT
  • DAFTAR SELECT <>
  • WHERE

Dalam SQL Server, DATENAME secara implisit mentransmisikan 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 Mengembalikan nilai
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 Mengembalikan nilai
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

Lihat juga

CAST dan CONVERT (transact-SQL)