Masalah:
Anda ingin mengubah format bidang tanggal atau nilai dalam database SQL Server.
Contoh:
Basis data kami memiliki tabel bernama Patient
dengan data di kolom Id
, FirstName
, LastName
, dan RegistrationDate
.
Id | Nama Depan | Nama Belakang | Tanggal Pendaftaran |
---|---|---|---|
1 | Jane | Williams | 20-06-2019 |
2 | Gabriel | Coklat | 02-02-2019 |
3 | Lora | Rakyat | 11-11-05 |
Mari kita ubah format tanggal pendaftaran setiap pasien. Kami akan menempatkan nama hari kerja terlebih dahulu, diikuti dengan hari dan nama bulan serta 4 digit tahun (mis. “Jumat, 27 Desember 2019”).
Solusi:
Kami akan menggunakan fungsi FORMAT() untuk mengubah format tanggal di RegistrationDate
kolom.
SELECT FirstName, LastName, FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy') AS FormattedRegistrationDate FROM Patient;
Berikut hasil querynya:
Nama Depan | Nama Belakang | FormattedRegistrationDate |
---|---|---|
Jane | Williams | Kamis, 20 Juni 2019 |
Gabriel | Coklat | Sabtu, 2 Februari 2019 |
Lora | Rakyat | Sabtu, 5 November 2016 |
Diskusi:
Kita dapat mengubah bagaimana tanggal tertentu ditampilkan dengan fungsi FORMAT(). Fungsi ini membutuhkan dua argumen wajib dan satu argumen opsional. Dalam contoh kami, kami hanya menggunakan dua argumen wajib. Yang pertama adalah tanggal, yang bisa dari kolom tanggal/waktu/tanggalwaktu atau ekspresi apa pun yang mengembalikan tanggal atau waktu. (Dalam contoh kami, kami menggunakan kolom RegistrationDate
.) Argumen kedua adalah string yang berisi format tanggal baru. Dalam contoh kami, kami menggunakan 'dddd, dd MMMM, yyyy' :
- dddd – Nama hari dalam seminggu.
- d – Hari dalam sebulan, dari 1 hingga 31.
- MMMM – Nama lengkap bulan.
- yyyy – Tahun empat digit.
Tabel di bawah ini menyajikan lebih banyak penentu format tanggal/waktu:
penentu | deskripsi |
---|---|
d | Hari dalam kisaran 1-31 |
dd | Hari dalam kisaran 31-01 |
ddd | Nama singkat dari hari dalam seminggu |
dddd | Nama lengkap hari dalam seminggu |
M | Bulan dari 1 sampai 12 |
MM | Bulan dari 01 hingga 12 |
MMM | Nama bulan yang disingkat |
MMMM | Nama lengkap bulan ini |
y | 2 digit tahun, dari 0 hingga 99 |
yy | 2 digit tahun dari 00 hingga 99 |
yyyy | tahun 4 digit |
g | Era (mis. M.) |
h | Jam dari 1 hingga 12 (jam 12 jam) |
hh | Jam dari 01 hingga 12 (jam 12 jam) |
H | Jam dari 0 hingga 23 (jam 24 jam) |
HH | Jam dari 00 hingga 23 (jam 24 jam) |
m | Menit dari 0 hingga 59 |
mm | Menit dari 00 hingga 59 |
s | Kedua dari 0 hingga 59 |
ss | Kedua dari 00 hingga 59 |
t | Karakter pertama AM atau PM (mis. 9A, 5P) |
tt | AM atau PM |
z | Offset jam, tanpa awalan nol (mis. +3) |
zz | Offset jam, dengan awalan nol (mis. +03) |
Anda dapat mempelajari lebih lanjut di dokumentasi Microsoft untuk format tanggal dan waktu standar serta format khusus.
Jika Anda ingin memformat tanggal ini untuk bahasa dan/atau negara tertentu, gunakan argumen opsional ketiga:budaya . Argumen ini adalah string yang berisi kode budaya untuk wilayah atau negara tertentu. (Kode budaya terdiri dari kode bahasa, tanda hubung, dan kode negara.) Pada contoh di bawah, kami menggunakan kode budaya untuk Jerman, yang menggabungkan kode bahasa Jerman ('de') dengan kode negara untuk Jerman ('DE'), yaitu 'de-DE'. Tanggal yang dihasilkan ditampilkan dalam bahasa Jerman dan diformat seperti yang diharapkan oleh pemirsa Jerman.
SELECT FirstName, LastName, FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy', 'de-DE') AS FormattedRegistrationDate FROM Patient;
Inilah hasil dari kueri ini:
Nama Depan | Nama Belakang | Tanggal Pendaftaran |
---|---|---|
Jane | Williams | Donnerstag, 20 Juni 2019 |
Gabriel | Coklat | Samstag, 2 Februari 2019 |
Lora | Rakyat | Samstag, 5 November 2016 |