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

Cách định dạng ngày trong T-SQL

Vấn đề:

Bạn muốn hiển thị giá trị ngày ở định dạng khác trong SQL Server.

Ví dụ:

Cơ sở dữ liệu của chúng tôi có một bảng có tên company với dữ liệu trong các cột id (khóa chính), tên start_date .

id tên start_date
1 Ngân hàng Lisa 2019-01-20
2 Viện tài chính tín dụng 2018-03-14
3 Williams Holding ngày 28 tháng 10 năm 2019

Đối với mỗi công ty, hãy chuyển đổi ngày bắt đầu của họ sang định dạng mới, 'YYYY / MM / DD', trong đó YYYY là năm 4 chữ số, MM là tháng 2 chữ số và DD là ngày 2 chữ số.

Giải pháp 1:

Chúng tôi sẽ sử dụng CONVERT() hàm số. Đây là truy vấn bạn sẽ viết:

SELECT 
  CONVERT(NVARCHAR, start_date, 111 ) AS new_date
FROM company;

Đây là kết quả:

name start_date
Ngân hàng Lisa 2019/01/20
Viện tài chính tín dụng 2018/03/14
Williams Holding 28/10/28

Thảo luận:

Sử dụng CONVERT() chức năng thay đổi định dạng của ngày từ một cột hoặc biểu thức nhất định.

Hàm này có ba đối số:

  1. Kiểu dữ liệu mới (trong ví dụ của chúng tôi là NVARCHAR).
  2. Một biểu thức hoặc tên cột có chứa ngày cần định dạng (trong ví dụ của chúng tôi là start_date cột).
  3. Mã kiểu tùy chọn, dưới dạng số nguyên. (Trong ví dụ của chúng tôi, kiểu ‘111’ hiển thị ngày bằng dấu gạch chéo để phân tách các phần.)

Bảng dưới đây trình bày các mã kiểu ngày phổ biến nhất:

mô tả
101 30/11/2019
102 2019.11.30
103 30/11/2019
104 30.11.2019
105 30-11-2019
110 30-11-2019
111 2019/11/30

Bạn có thể tìm thấy danh sách đầy đủ các kiểu định dạng trong tài liệu T-SQL.

Truy vấn ở trên đã thay đổi định dạng của ngày của Ngân hàng Lisa 2019-01-20 thành một chuỗi có chứa ngày '2019/01/20'.

Giải pháp 2:

Trong SQL Server 2012 trở lên, bạn có thể sử dụng FORMAT() chức năng thay đổi các định dạng ngày / giờ. Bạn sử dụng các ký tự dưới đây để chỉ định định dạng mong muốn:

mẫu mô tả
đ ngày trong phạm vi 01-31
MM tháng trong khoảng 01-12
vâng năm 2 chữ số
yyyy năm 4 chữ số
HH giờ trong phạm vi 00-23
mm phút trong khoảng 00-59
ss giây trong phạm vi 00-59

Đây là truy vấn bạn sẽ viết bằng cách sử dụng FORMAT ():

SELECT 
  FORMAT(start_date, ‘yyyy-MM-dd’ ) AS new_date
FROM company;

Đối số đầu tiên là giá trị datetime / date / time để định dạng lại. Thứ hai là một chuỗi chứa mẫu của định dạng mới. Hàm này trả về kiểu dữ liệu NVARCHAR. Sử dụng FORMAT() nếu bạn làm việc trên SQL Server 2012 trở lên và muốn chuyển đổi ngày / giờ thành chuỗi chứa ngày / giờ được định dạng.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khắc phục sự cố AlwaysOn - Đôi khi phải xem xét nhiều lần

  2. Xác định cấu trúc Hóa đơn nguyên vật liệu (BOM) trong Cơ sở dữ liệu

  3. Xóa dấu vết mặc định - Phần 1

  4. Cách xuất dữ liệu sang tệp phẳng với BCP Utility và nhập dữ liệu với chèn hàng loạt

  5. Xu hướng cơ sở dữ liệu năm 2019 - SQL so với NoSQL, Cơ sở dữ liệu hàng đầu, Sử dụng một cơ sở dữ liệu so với Nhiều cơ sở dữ liệu