Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Hãy nhớ điều này khi định dạng kiểu dữ liệu TIME trong SQL Server (T-SQL)

Trong SQL Server, khi bạn sử dụng T-SQL FORMAT() chức năng định dạng thời gian kiểu dữ liệu, bạn cần nhớ để thoát khỏi bất kỳ dấu hai chấm hoặc dấu chấm nào trong chuỗi định dạng của bạn.

Điều này là do FORMAT() hàm dựa trên các quy tắc định dạng CLR, quy định rằng dấu hai chấm và dấu chấm phải được thoát ra. Do đó, khi chuỗi định dạng (tham số thứ hai) chứa dấu hai chấm hoặc dấu chấm, dấu hai chấm hoặc dấu chấm phải được thoát bằng dấu gạch chéo ngược khi giá trị đầu vào (tham số đầu tiên) là time loại dữ liệu.

Ví dụ 1 - Thoát khỏi Colon

Đây là một ví dụ cơ bản về việc sử dụng FORMAT() chức năng định dạng thời gian kiểu dữ liệu.

SELECT FORMAT(CAST('11:28:15' AS time), 'hh\:mm') Result;

Kết quả:

+----------+
| Result   |
|----------|
| 11:28    |
+----------+

Lưu ý dấu gạch chéo ngược trong chuỗi định dạng.

Ví dụ 2 - Bỏ qua một khoảng thời gian

Điều tương tự cũng áp dụng nếu chúng ta muốn định dạng nó bằng dấu chấm:

SELECT FORMAT(CAST('11:28:15' AS time), 'hh\.mm') Result;

Kết quả:

+----------+
| Result   |
|----------|
| 11.28    |
+----------+

Ví dụ 3 - Không thoát

Dưới đây là những gì sẽ xảy ra nếu chúng ta không thoát khỏi dấu hai chấm hoặc dấu chấm.

SELECT 
  FORMAT(CAST('11:28:15' AS time), 'hh:mm') 'Unescaped Colon',
  FORMAT(CAST('11:28:15' AS time), 'hh.mm') 'Unescaped Period';

Kết quả:

+-------------------+--------------------+
| Unescaped Colon   | Unescaped Period   |
|-------------------+--------------------|
| NULL              | NULL               |
+-------------------+--------------------+

Chúng tôi nhận được NULL trong cả hai trường hợp.

Ví dụ 4 - Ngày giờ (không cần thoát)

Bạn chỉ cần thoát khỏi dấu hai chấm và dấu chấm nếu giá trị đầu vào thuộc loại dữ liệu thời gian . Nếu đó là ngày giờ (hoặc datetime2 vv), bạn không cần phải thoát khỏi chúng.

Nếu tôi sử dụng ví dụ trước, nhưng chuyển các giá trị đầu vào thành datetime2 , chúng tôi nhận được kết quả mong muốn mà không cần phải thoát khỏi bất cứ điều gì:

SELECT 
  FORMAT(CAST('11:28:15' AS datetime2), 'hh:mm') 'Unescaped Colon',
  FORMAT(CAST('11:28:15' AS datetime2), 'hh.mm') 'Unescaped Period';

Kết quả:

+-------------------+--------------------+
| Unescaped Colon   | Unescaped Period   |
|-------------------+--------------------|
| 11:28             | 11.28              |
+-------------------+--------------------+

Điều tương tự cũng áp dụng cho sysdatetime :

SELECT 
  FORMAT(SYSDATETIME(), 'hh:mm') 'Unescaped Colon',
  FORMAT(SYSDATETIME(), 'hh.mm') 'Unescaped Period';

Kết quả:

+-------------------+--------------------+
| 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. Trả lại hạt giống ban đầu của cột danh tính trong SQL Server

  2. SQL - Làm thế nào để lưu trữ và điều hướng cấu trúc phân cấp?

  3. SQL Server:Sự khác biệt giữa CROSS JOIN và FULL OUTER JOIN là gì?

  4. Lỗi:Nhà cung cấp TCP:Mã lỗi 0x2746. Trong quá trình thiết lập Sql trong linux thông qua thiết bị đầu cuối

  5. Danh sách các hàm ngày và giờ trong SQL Server (T-SQL)