Di SQL Server, ketika Anda menggunakan T-SQL FORMAT()
berfungsi untuk memformat waktu tipe data, Anda harus ingat untuk menghindari titik dua atau titik apa pun dalam string format Anda.
Ini karena FORMAT()
fungsi bergantung pada aturan pemformatan CLR, yang menentukan bahwa titik dua dan titik harus diloloskan. Oleh karena itu, ketika format string (parameter kedua) berisi titik dua atau titik, titik dua atau titik harus diloloskan dengan garis miring terbalik ketika nilai input (parameter pertama) adalah waktu tipe data.
Contoh 1 – Keluar dari Titik Dua
Berikut adalah contoh dasar penggunaan FORMAT()
berfungsi untuk memformat waktu tipe data.
SELECT FORMAT(CAST('11:28:15' AS time), 'hh\:mm') Result;
Hasil:
+----------+ | Result | |----------| | 11:28 | +----------+
Perhatikan garis miring terbalik dalam format string.
Contoh 2 – Keluar dari Periode
Hal yang sama berlaku jika kita ingin memformatnya dengan titik:
SELECT FORMAT(CAST('11:28:15' AS time), 'hh\.mm') Result;
Hasil:
+----------+ | Result | |----------| | 11.28 | +----------+
Contoh 3 – Tidak lolos
Inilah yang terjadi jika kita tidak lolos dari titik dua atau titik.
SELECT FORMAT(CAST('11:28:15' AS time), 'hh:mm') 'Unescaped Colon', FORMAT(CAST('11:28:15' AS time), 'hh.mm') 'Unescaped Period';
Hasil:
+-------------------+--------------------+ | Unescaped Colon | Unescaped Period | |-------------------+--------------------| | NULL | NULL | +-------------------+--------------------+
Kami mendapatkan NULL
dalam kedua kasus.
Contoh 4 – Datetime (tidak perlu keluar)
Anda hanya perlu keluar dari titik dua dan titik jika nilai inputnya adalah tipe data waktu . Jika ini waktu kencan (atau datetime2 dll), Anda tidak perlu menghindarinya.
Jika saya menggunakan contoh sebelumnya, tetapi alihkan nilai input ke datetime2 , kami mendapatkan hasil yang diinginkan tanpa perlu menghindari apa pun:
SELECT FORMAT(CAST('11:28:15' AS datetime2), 'hh:mm') 'Unescaped Colon', FORMAT(CAST('11:28:15' AS datetime2), 'hh.mm') 'Unescaped Period';
Hasil:
+-------------------+--------------------+ | Unescaped Colon | Unescaped Period | |-------------------+--------------------| | 11:28 | 11.28 | +-------------------+--------------------+
Hal yang sama berlaku untuk sysdatetime :
SELECT FORMAT(SYSDATETIME(), 'hh:mm') 'Unescaped Colon', FORMAT(SYSDATETIME(), 'hh.mm') 'Unescaped Period';
Hasil:
+-------------------+--------------------+ | Unescaped Colon | Unescaped Period | |-------------------+--------------------| | 04:46 | 04.46 | +-------------------+--------------------+