Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Ingat Ini Saat Memformat Tipe Data WAKTU di SQL Server (T-SQL)

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              |
+-------------------+--------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah memiliki 'ATAU' dalam kondisi INNER JOIN adalah ide yang buruk?

  2. Perbaiki "Kesalahan overflow aritmatika mengonversi int ke tipe data numerik" di SQL Server

  3. Kueri hierarkis di SQL Server 2005

  4. Cara menggunakan UPDATE dari SELECT di SQL Server

  5. Bagaimana cara mengubah jumlah menit ke format jj:mm di TSQL?