Saat bekerja dengan tanggal di SQL Server, terkadang Anda mungkin menemukan diri Anda meraih DATEPART()
fungsi, hanya untuk menyadari bahwa yang benar-benar Anda butuhkan adalah DATENAME()
fungsi. Kemudian mungkin ada situasi lain di mana DATEPART()
sebenarnya lebih disukai daripada DATENAME()
.
Jadi apa perbedaan antara DATEPART()
dan DATENAME()
fungsi?
Mari kita cari tahu.
Definisi
Perbedaan antara kedua fungsi ini terletak pada definisinya:
DATEPART()
- Mengembalikan bilangan bulat yang mewakili datepart . yang ditentukan dari tanggal yang ditentukan .
DATENAME()
- Mengembalikan string karakter yang mewakili datepart . yang ditentukan dari tanggal yang ditentukan
Menurut definisi mereka, satu-satunya perbedaan antara kedua fungsi ini adalah tipe pengembalian:
DATEPART()
mengembalikan bilangan bulat.DATENAME()
mengembalikan string.
Jadi itulah perbedaannya.
Dalam kedua definisi, datepart adalah bagian dari tanggal yang Anda inginkan (misalnya bulan), dan tanggal adalah tanggal yang Anda inginkan untuk mengembalikan bagian tanggal.
Nama Bulan dan Hari
Contoh paling jelas di mana DATENAME()
lebih cocok untuk DATEPART()
adalah saat Anda ingin mengembalikan nama hari atau bulan.
Ini contohnya.
NAMA TANGGAL()
Ini dia DATENAME()
kembali ketika kita menginginkan hari kerja dan bulan dari tanggal:
SELECT DATENAME(weekday, '2000-01-01') AS 'DATENAME Weekday', DATENAME(month, '2000-01-01') AS 'DATENAME Month';
Hasil:
+--------------------+------------------+ | DATENAME Weekday | DATENAME Month | |--------------------+------------------| | Saturday | January | +--------------------+------------------+
DATEPART()
Ini dia DATEPART()
kembali:
SELECT DATEPART(weekday, '2000-01-01') AS 'DATEPART Weekday', DATEPART(month, '2000-01-01') AS 'DATEPART Month';
Hasil:
+--------------------+------------------+ | DATEPART Weekday | DATEPART Month | |--------------------+------------------| | 7 | 1 | +--------------------+------------------+
Saat Hasil Sama
Dalam kebanyakan kasus, hasil dari kedua fungsi akan tampak sama. Ini karena sebagian besar bagian tanggal bersifat numerik. Misalnya:
SELECT DATEPART(year, '2000-01-01') AS DATEPART, DATENAME(year, '2000-01-01') AS DATENAME;
Hasil:
+------------+------------+ | DATEPART | DATENAME | |------------+------------| | 2000 | 2000 | +------------+------------+
Namun, seperti yang disebutkan, yang satu mengembalikan bilangan bulat dan yang lainnya mengembalikan string.
Kita dapat melihat buktinya dengan contoh berikut:
SELECT DATEPART(year, '2000-01-01') + '1' AS DATEPART, DATENAME(year, '2000-01-01') + '1' AS DATENAME;
Hasil:
+------------+------------+ | DATEPART | DATENAME | |------------+------------| | 2001 | 20001 | +------------+------------+
Tanda plus adalah operator aritmatika pada tipe data numerik, tetapi merupakan operator penggabungan string pada string.