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 và 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ố:
- Kiểu dữ liệu mới (trong ví dụ của chúng tôi là NVARCHAR).
- 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). - 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ã | 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.