Masalah:
Anda ingin menampilkan nilai tanggal dalam format lain di SQL Server.
Contoh:
Basis data kami memiliki tabel bernama company
dengan data di kolom id (kunci utama), nama , dan tanggal_mulai .
id | nama | tanggal_mulai |
---|---|---|
1 | Bank Lisa | 20-01-2019 |
2 | Lembaga Keuangan Kredit | 14-03-2018 |
3 | Williams Memegang | 28-10-2019 |
Untuk setiap perusahaan, mari ubah tanggal mulai mereka ke format baru, 'YYYY/MM/DD', di mana YYYY adalah tahun dengan 4 digit, MM adalah bulan dengan 2 digit, dan DD adalah hari dengan 2 digit.
Solusi 1:
Kami akan menggunakan CONVERT()
fungsi. Inilah kueri yang akan Anda tulis:
SELECT CONVERT(NVARCHAR, start_date, 111 ) AS new_date FROM company;
Ini hasilnya:
nama | tanggal_mulai |
---|---|
Bank Lisa | 2019/01/20 |
Lembaga Keuangan Kredit | 2018/03/14 |
Williams Holding | 2019/10/28 |
Diskusi:
Gunakan CONVERT()
berfungsi untuk mengubah format tanggal dari kolom atau ekspresi tertentu.
Fungsi ini membutuhkan tiga argumen:
- Tipe data baru (dalam contoh kita, NVARCHAR).
- Sebuah ekspresi atau nama kolom yang berisi tanggal untuk diformat (dalam contoh kita,
start_date
kolom). - Kode gaya opsional, sebagai bilangan bulat. (Dalam contoh kita, gaya '111' menampilkan tanggal menggunakan garis miring untuk memisahkan bagian-bagiannya.)
Tabel di bawah menyajikan kode gaya tanggal paling populer:
kode | deskripsi |
---|---|
101 | 30/11/2019 |
102 | 2019.11.30 |
103 | 30/11/2019 |
104 | 30-11-2019 |
105 | 30-11-2019 |
110 | 30-11-2019 |
111 | 2019/11/30 |
Daftar lengkap gaya format dapat ditemukan di dokumentasi T-SQL.
Kueri di atas mengubah format tanggal Lisa Bank 2019-01-20 menjadi string yang berisi tanggal '2019/01/20'.
Solusi 2:
Di SQL Server 2012 dan yang lebih baru, Anda dapat menggunakan FORMAT()
berfungsi untuk mengubah format tanggal/waktu. Anda menggunakan karakter di bawah ini untuk menentukan format yang diinginkan:
pola | deskripsi |
---|---|
dd | hari dalam rentang 01-31 |
MM | bulan dalam kisaran 01-12 |
yy | 2 digit tahun |
yyyy | tahun 4 digit |
HH | jam dalam rentang 00-23 |
mm | menit dalam rentang 00-59 |
ss | detik dalam rentang 00-59 |
Inilah kueri yang akan Anda tulis menggunakan FORMAT():
SELECT FORMAT(start_date, ‘yyyy-MM-dd’ ) AS new_date FROM company;
Argumen pertama adalah nilai datetime/date/time untuk memformat ulang. Yang kedua adalah string yang berisi pola format baru. Fungsi ini mengembalikan tipe data NVARCHAR. Gunakan FORMAT()
jika Anda bekerja pada SQL Server 2012 atau yang lebih baru dan ingin mengonversi tanggal/waktu menjadi string yang berisi tanggal/waktu yang diformat.