Di SQL Server, T-SQL DATEPART()
fungsi mengembalikan bilangan bulat yang mewakili datepart yang ditentukan dari tanggal yang ditentukan . Misalnya, Anda dapat meneruskan 2021-01-07
dan minta SQL Server mengembalikan hanya bagian tahun (2021
).
Anda juga dapat mengekstrak bagian waktu. Misalnya, Anda dapat memasukkan 2018-06-02 08:24:14.3112042
dan minta SQL Server hanya mengembalikan porsi jam (8
).
Contoh di bawah.
Sintaks
Pertama, sintaks. DATEPART()
sintaksnya seperti ini:
DATEPART ( datepart , date )
Dimana datepart
adalah bagian dari date
(nilai tanggal atau waktu) yang akan menampilkan bilangan bulat.
Contoh 1
Berikut adalah contoh dasar di mana saya mengembalikan komponen tahun dari tanggal.
SELECT DATEPART(year, '2021-01-07') AS Result;
Hasil:
+----------+ | Result | |----------| | 2021 | +----------+
Contoh 2
Dalam contoh ini saya menetapkan tanggal ke variabel, lalu saya menggunakan beberapa contoh DATEPART()
untuk mengambil bagian yang berbeda dari tanggal tersebut.
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042'; SELECT DATEPART(year, @date) AS Year, DATEPART(quarter, @date) AS Quarter, DATEPART(month, @date) AS Month, DATEPART(dayofyear, @date) AS 'Day of Year', DATEPART(day, @date) AS Day, DATEPART(week, @date) AS Week, DATEPART(weekday, @date) AS Weekday;
Hasil:
+--------+-----------+---------+---------------+-------+--------+-----------+ | Year | Quarter | Month | Day of Year | Day | Week | Weekday | |--------+-----------+---------+---------------+-------+--------+-----------| | 2018 | 2 | 6 | 153 | 2 | 22 | 7 | +--------+-----------+---------+---------------+-------+--------+-----------+
Contoh 3
Anda juga dapat mengambil berbagai bagian waktu dari tanggal.
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042'; SELECT DATEPART(hour, @date) AS Hour, DATEPART(minute, @date) AS Minute, DATEPART(second, @date) AS Second, DATEPART(millisecond, @date) AS Millsecond, DATEPART(microsecond, @date) AS Microsecond, DATEPART(nanosecond, @date) AS Nanosecond;
Hasil:
+--------+----------+----------+--------------+---------------+--------------+ | Hour | Minute | Second | Millsecond | Microsecond | Nanosecond | |--------+----------+----------+--------------+---------------+--------------| | 8 | 24 | 14 | 311 | 311204 | 311204200 | +--------+----------+----------+--------------+---------------+--------------+
Contoh 4
Anda juga dapat mengambil TZoffset
dan ISO_WEEK
bagian tanggal.
TZoffset
dikembalikan sebagai jumlah menit (ditandatangani). ISO_WEEK
datepart mengacu pada sistem tanggal minggu ISO (bagian dari standar ISO 8601) yang merupakan sistem penomoran untuk minggu.
DECLARE @date datetimeoffset = '2018-06-02 08:24:14.3112042 +08:00'; SELECT DATEPART(TZoffset, @date) AS 'Time Zone Offset', DATEPART(ISO_WEEK, @date) AS 'ISO_WEEK';
Hasil:
+--------------------+------------+ | Time Zone Offset | ISO_WEEK | |--------------------+------------| | 480 | 22 | +--------------------+------------+
Dalam contoh ini, saya menyetel tanggal ke datetimeoffset
format, yang mencakup offset zona waktu. TZoffset
dikembalikan dalam hitungan menit.
Alternatif Cepat
T-SQL juga menawarkan cara yang lebih ringkas untuk mengembalikan komponen hari, bulan, atau tahun dari tanggal dengan DAY()
, MONTH()
dan YEAR()
fungsi.
Mereka bekerja seperti ini:
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042'; SELECT DAY(@date) AS DAY, MONTH(@date) AS MONTH, YEAR(@date) AS YEAR;
Hasil:
+-------+---------+--------+ | DAY | MONTH | YEAR | |-------+---------+--------| | 2 | 6 | 2018 | +-------+---------+--------+
Mendapatkan Nama Bulan atau Nama Hari
Jika Anda perlu mendapatkan nama bulan atau nama hari, gunakan DATENAME()
fungsi sebagai gantinya. Fungsi ini mengembalikan hasil sebagai string karakter, dan Anda dapat mengembalikan bulan dan hari kerja dengan nama. Berikut ini beberapa DATENAME()
contoh untuk menunjukkan apa yang saya maksud.