Bagikan melalui


DATEPART (Transact-SQL)

Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Fungsi ini mengembalikan bilangan bulat 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

Sintaks

DATEPART ( datepart , date )  

Argumen

datepart
Bagian spesifik dari argumen tanggal yang DATEPART akan mengembalikan bilangan bulat. Tabel ini mencantumkan semua argumen datepart yang valid.

Catatan

DATEPART 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
jam hh
menit mi, n
detik ss, s
milidetik ms
mikrosecond Mcs
nanodetik Ns
tzoffset tz
iso_week isowk, isoww

date
Ekspresi yang diselesaikan ke salah satu jenis data berikut:

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

Untuk tanggal, DATEPART 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

int

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.

Tabel ini mencantumkan semua argumen datepart , dengan nilai pengembalian yang sesuai, untuk pernyataan SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10'). Argumen tanggal memiliki tipe data datetimeoffset(7). Dua posisi terakhir dari nilai pengembalian datepart nanodetik selalu 00 dan nilai ini memiliki skala 9:

.123456700

datepart Nilai hasil
tahun, yyyy, yy 2007
kuartal, qq, q 4
bulan, mm, m 10
dayofyear, dy, y 303
hari, dd, d 30
minggu, wk, ww 44
hari kerja, dw 3
jam, hh 12
menit, n 15
kedua, ss, s 32
milidetik, ms 123
microsecond, mcs 123456
nanodetik, ns 123456700
tzoffset, tz 310
iso_week, isowk, isoww 44

Argumen datepart mingguan dan hari kerja

Untuk datepart minggu (wk, ww) atau hari kerja (dw),DATEPART nilai pengembalian tergantung pada nilai yang ditetapkan oleh SET DATEFIRST.

1 Januari setiap tahun mendefinisikan nomor awal untuk datepart minggu. Contohnya:

DATEPART (wk, 'Jan 1, xxxx') = 1

di mana xxxx adalah tahun apa pun.

Tabel ini memperlihatkan nilai pengembalian untuk datepart minggu dan hari kerja untuk '2007-04-21 ' untuk setiap argumen SET DATEFIRST. 1 Januari 2007 jatuh pada hari Senin. 21 April 2007 jatuh pada hari Sabtu. Untuk Inggris A.S. ,

SET DATEFIRST 7 -- ( Sunday )

berfungsi sebagai default. Setelah mengatur DATEFIRST, gunakan pernyataan SQL yang disarankan ini untuk nilai tabel datepart:

SELECT DATEPART(week, '2007-04-21 '), DATEPART(weekday, '2007-04-21 ')

SET DATEFIRST

argumen
minggu

Kembali
weekday

Kembali
1 16 6
2 17 5
3 17 4
4 17 3
5 17 2
6 17 1
7 16 7

Argumen datepart tahun, bulan, dan hari

Nilai yang dikembalikan untuk DATEPART (tahun, tanggal), DATEPART (bulan, tanggal), dan DATEPART (hari, tanggal) sama dengan yang dikembalikan oleh fungsi YEAR, MONTH, dan DAY.

iso_week datepart

ISO 8601 mencakup sistem tanggal minggu ISO, sistem penomoran selama berpekan-minggu. Setiap minggu dikaitkan dengan tahun di mana Kamis terjadi. Misalnya, minggu ke-1 tahun 2004 (2004W01) tercakup senin, 29 Desember 2003 hingga Minggu, 4 Januari 2004. Negara/wilayah Eropa biasanya menggunakan gaya penomoran ini. Negara/wilayah non-Eropa biasanya tidak menggunakannya.

Catatan: jumlah minggu tertinggi dalam setahun bisa 52 atau 53.

Sistem penomoran dari berbagai negara/wilayah mungkin tidak mematuhi standar ISO. Tabel ini menunjukkan enam kemungkinan:

Hari pertama dalam seminggu Minggu pertama tahun berisi Minggu ditetapkan dua kali Digunakan oleh/dalam
Hari Minggu 1 Januari,

Sabtu pertama,

1-7 hari dalam setahun
Ya Amerika Serikat
Senin 1 Januari,

Minggu Pertama,

1-7 hari dalam setahun
Ya Sebagian besar Eropa dan Inggris Raya
Senin 4 Januari,

Kamis pertama,

4-7 hari dalam setahun
No ISO 8601, Norwegia, dan Swedia
Senin 7 Januari,

Senin pertama,

Tujuh hari dalam setahun
No
Rabu 1 Januari,

Selasa pertama,

1-7 hari dalam setahun
Ya
Sabtu 1 Januari,

Jumat Pertama,

1-7 hari dalam setahun
Ya

tzoffset

DATEPART mengembalikan nilai tzoffset (tz) sebagai jumlah menit (ditandatangani). Pernyataan ini mengembalikan offset zona waktu 310 menit:

SELECT DATEPART (tzoffset, '2007-05-10  00:00:01.1234567 +05:10');  

DATEPART merender nilai tzoffset sebagai berikut:

  • Untuk datetimeoffset dan datetime2, tzoffset mengembalikan offset waktu dalam menit, di mana offset untuk datetime2 selalu 0 menit.
  • Untuk jenis data yang dapat secara implisit mengonversi ke datetimeoffset atau datetime2, DATEPART mengembalikan offset waktu dalam hitung menit. Pengecualian: jenis data tanggal/waktu lainnya.
  • Parameter dari semua jenis lainnya mengakibatkan kesalahan.

Argumen tanggal smalldatetime

Untuk nilai tanggal smalldatetime, DATEPART mengembalikan detik sebagai 00.

Default Dikembalikan untuk datepart Yang Tidak ada dalam Argumen tanggal

Jika jenis data argumen tanggal tidak memiliki datepart yang ditentukan, DATEPART akan mengembalikan default untuk datepart tersebut hanya ketika literal ditentukan untuk tanggal.

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 mengembalikan 1900, 1, 1, 1, 2.

SELECT DATEPART(year, '12:10:30.123')  
    ,DATEPART(month, '12:10:30.123')  
    ,DATEPART(day, '12:10:30.123')  
    ,DATEPART(dayofyear, '12:10:30.123')  
    ,DATEPART(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, DATEPART 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 DATEPART(year, @t);  

Detik pecahan

Pernyataan ini menunjukkan bahwa DATEPART mengembalikan detik pecahan:

SELECT DATEPART(millisecond, '00:00:01.1234567'); -- Returns 123  
SELECT DATEPART(microsecond, '00:00:01.1234567'); -- Returns 123456  
SELECT DATEPART(nanosecond,  '00:00:01.1234567'); -- Returns 123456700  

Keterangan

DATEPART dapat digunakan dalam daftar pemilihan, klausa WHERE, HAVING, GROUP BY, dan ORDER BY.

DATEPART secara implisit melemparkan literal string sebagai jenis datetime2 di SQL Server 2008 (10.0.x) dan yang lebih baru. Ini berarti bahwa 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 tahun dasar. Tahun dasar membantu perhitungan tanggal. Dalam contoh, angka menentukan tanggal. Perhatikan bahwa SQL Server menginterpretasikan 0 sebagai 1 Januari 1900.

SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);  

-- Returns: 1900    1    1 

Contoh ini mengembalikan bagian hari dari tanggal 12/20/1974.

-- Uses AdventureWorks  
  
SELECT TOP(1) DATEPART (day,'12/20/1974') FROM dbo.DimCustomer;  

-- Returns: 20

Contoh ini mengembalikan bagian tahun dari tanggal 12/20/1974.

-- Uses AdventureWorks  
  
SELECT TOP(1) DATEPART (year,'12/20/1974') FROM dbo.DimCustomer;  

-- Returns: 1974

Lihat juga

CAST dan CONVERT (Transact-SQL)DATETRUNC