Jika Anda bekerja dengan SQL Server, kemungkinan Anda telah menggunakan setidaknya satu dari CONVERT()
atau CAST()
berfungsi untuk mengkonversi dari satu tipe data ke tipe data lainnya. Jika Anda pernah mengalami kesalahan saat mencoba mengonversi string ke tipe data tanggal/waktu, PARSE()
fungsi bisa menjadi apa yang Anda butuhkan.
Misalnya, jika Anda memiliki string seperti katakanlah, Jumat, 20 Jul 2018 , CONVERT()
atau CAST()
fungsi akan melempar kesalahan. Namun PARSE()
fungsi akan menanganinya tanpa masalah.
PARSE()
fungsi mengembalikan hasil ekspresi, diterjemahkan ke tipe data yang diminta di SQL Server. Jadi Anda dapat menggunakannya untuk "menerjemahkan" nilai string Anda menjadi tipe data tanggal/waktu (seperti tanggal , waktu tanggal , datetime2 , dll).
Sintaks
Berikut sintaks untuk PARSE()
fungsi:
PARSE ( string_value AS data_type [ USING culture ] )
Dimana string_value
adalah nilai yang ingin diurai, data_type
adalah tipe data yang Anda inginkan untuk diuraikan, dan culture
adalah argumen opsional yang dapat Anda gunakan untuk menentukan format bahasa yang akan digunakan saat mengurai string.
Contoh Dasar
Berikut adalah contoh dasar untuk mendemonstrasikan penggunaan.
SELECT PARSE('Friday, 20 July 2018' AS datetime2) AS 'Result';
Hasil:
+-----------------------------+ | Result | |-----------------------------| | 2018-07-20 00:00:00.0000000 | +-----------------------------+
Hapus Bagian Waktu
Pada contoh sebelumnya, kami menetapkan bahwa string harus diuraikan sebagai datetime2 tipe data. Tipe data ini termasuk komponen waktu dengan presisi tinggi. Jika Anda tidak memerlukan komponen waktu, Anda selalu dapat menguraikannya sebagai tanggal tipe data.
Inilah hasilnya jika kita menentukan tanggal tipe data:
SELECT PARSE('Friday, 20 July 2018' AS date) AS 'Result';
Hasil:
+------------+ | Result | |------------| | 2018-07-20 | +------------+
Pertahankan Bagian Waktu, Tapi dengan Kurang Presisi
Dan jika Anda melakukannya membutuhkan waktu, tetapi dengan kurang presisi, Anda selalu dapat menggunakan smalldatetime tipe data:
SELECT PARSE('2:35:50pm, Friday, 20 July 2018' AS smalldatetime) AS 'Result';
Hasil:
+---------------------+ | Result | |---------------------| | 2018-07-20 14:36:00 | +---------------------+
Namun jika itu tidak cukup tepat, selalu ada waktu kencan tipe data:
SELECT PARSE('2:35:50.5234pm, Friday, 20 July 2018' AS datetime) AS 'Result';
Hasil:
+-------------------------+ | Result | |-------------------------| | 2018-07-20 14:35:50.523 | +-------------------------+
Variasi Input Tanggal
PARSE()
function biasanya dapat menentukan tanggal yang Anda coba konversi, selama Anda memberikannya sebagai representasi valid dari tipe data yang diminta. Berikut adalah beberapa contoh tanggal yang disediakan dalam berbagai gaya:
SELECT PARSE('Friday, 20 July 2018' AS date) AS 'Result 1', PARSE('Fri, 20 July 2018' AS date) AS 'Result 2', PARSE('Friday, July 20 2018' AS date) AS 'Result 3', PARSE('Fri 20 Jul 18' AS date) AS 'Result 4';
Hasil:
+------------+------------+------------+------------+ | Result 1 | Result 2 | Result 3 | Result 4 | |------------+------------+------------+------------| | 2018-07-20 | 2018-07-20 | 2018-07-20 | 2018-07-20 | +------------+------------+------------+------------+
Namun, itu bukan psikis:
SELECT PARSE('Next Friday' AS date) AS 'Result';
Hasil:
Error converting string value 'Next Friday' into data type date using culture ''.
Tambahkan Budaya
Anda dapat menambahkan argumen ketiga untuk menentukan budaya tempat string Anda diformat. Misalnya, jika tanggal Anda 01/06/2018
, ini bisa berarti 6 Januari 2018 atau 1 Juni 2018 , tergantung pada budaya yang digunakan.
Berikut ini contoh menentukan budaya:
SELECT PARSE('01/06/2018' AS date USING 'en-US') AS 'en-US', PARSE('01/06/2018' AS date USING 'en-GB') AS 'en-GB';
Hasil:
+------------+------------+ | en-US | en-GB | |------------+------------| | 2018-01-06 | 2018-06-01 | +------------+------------+
Jika Anda tidak memberikan argumen ini, bahasa sesi saat ini akan digunakan.
Menyediakan Hari Kerja yang Salah
PARSE()
fungsinya cukup cerdas, jika Anda memberikan hari kerja yang salah, itu akan mengembalikan kesalahan.
Jadi jika kita menggunakan tanggal yang sama dengan contoh sebelumnya, tetapi kita mengubah hari kerja dari Jumat menjadi Kamis, inilah yang terjadi:
SELECT PARSE('Thursday, 20 July 2018' AS date) AS 'Result';
Hasil:
Error converting string value 'Thursday, 20 July 2018' into data type date using culture ''.