Masalah:
Anda ingin mengonversi string yang berisi tanggal dan waktu ke nilai TIME di SQL Server.
Kita perlu mengonversi string yang berisi nama hari kerja, tanggal, dan waktu menjadi nilai TIME.
Solusi 1:
Kami akan menggunakan PARSE()
fungsi. Inilah kueri yang akan Anda tulis:
SELECT PARSE('Sunday, 2 February 2020 11:23:11.1134505' AS TIME ) AS time_value;
Ini hasilnya:
11:23:11.1134505
Diskusi:
Gunakan PARSE()
berfungsi untuk mengonversi string yang berisi nama hari kerja, tanggal, dan waktu ke tipe data TIME. Fungsi ini mengambil string yang akan dikonversi, kata kunci AS, dan tipe data baru (dalam contoh kita, TIME
). String harus berisi nilai yang mewakili tipe data ini. Dalam contoh kita, string 'February 2, 2020 11:23:11.1134505'
menyimpan nilai waktu.
Perhatikan bahwa waktu hanyalah bagian dari string ini, yang juga berisi nama hari dalam seminggu. Jangan gunakan CONVERT()
atau CAST()
fungsi dalam hal ini; mereka juga mengembalikan tipe data TIME, tetapi tanpa hari dalam seminggu.
Jika Anda menggunakan bahasa lisan yang berbeda dari bahasa server, sertakan kata kunci MENGGUNAKAN dan kode budaya yang sesuai. Untuk bahasa Polandia, tulis:
SELECT PARSE('Niedziela, 2 lutego 2020 11:23:11.1134505' AS TIME USING 'pl-PL' ) AS time_value;
Untuk lebih lanjut tentang nilai parameter budaya, lihat dokumentasi SQL Server resmi.
Dalam hal ini, Anda harus menggunakan PARSE()
berfungsi, meskipun tidak memiliki kinerja terbaik. Jika Anda mengoperasikan string yang mewakili nilai waktu yang tidak menyimpan data tambahan (seperti nama hari minggu), gunakan CASE()
fungsi. Ini contohnya.
Solusi 2:
SELECT CAST('2 February 2020 11:23:11.1134505' AS TIME ) AS time_value;
Ini hasilnya:
11:23:11.1134505
String yang berisi tanggal dan waktu untuk mengkonversi harus dalam format tipe data tanggal dan waktu T-SQL. Anda dapat membaca lebih lanjut di dokumentasi SQL Server.
CAST()
fungsinya adalah ANSI SQL Standard dan kinerjanya lebih baik daripada CONVERT()
atau PARSE()
.
Terakhir, Anda juga dapat menggunakan CONVERT()
fungsi. Lihat contoh berikutnya.
Solusi 3:
SELECT CONVERT(TIME, '2 Feb, 2020 11:23:11.1134505') AS time_value;
Hasilnya:
11:23:11.1134505
CONVERT()
function membutuhkan tiga argumen:tipe data baru, string yang akan dikonversi, dan format (opsional) yang diinginkan. Namun, Anda hanya boleh menggunakan fungsi ini jika Anda perlu menentukan bagaimana data tanggal dan waktu harus diformat, karena kinerjanya tidak sebaik CAST()
.