Vấn đề:
Bạn muốn thay đổi định dạng của trường ngày tháng hoặc giá trị trong cơ sở dữ liệu SQL Server.
Ví dụ:
Cơ sở dữ liệu của chúng tôi có một bảng có tên Patient
với dữ liệu trong các cột Id
, FirstName
, LastName
và RegistrationDate
.
Id | FirstName | LastName | Ngày đăng ký |
---|---|---|---|
1 | Jane | Williams | 2019-06-20 |
2 | Gabriel | Màu nâu | 2019-02-02 |
3 | Lora | Dân gian | ngày 11 tháng 5 năm 2016 |
Hãy thay đổi định dạng ngày đăng ký của từng bệnh nhân. Chúng tôi sẽ đặt tên của ngày trong tuần trước, sau đó là ngày và tên trong tháng và năm gồm 4 chữ số (ví dụ:“Thứ Sáu, ngày 27 tháng 12 năm 2019”).
Giải pháp:
Chúng tôi sẽ sử dụng hàm FORMAT () để thay đổi định dạng của ngày trong RegistrationDate
cột.
SELECT FirstName, LastName, FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy') AS FormattedRegistrationDate FROM Patient;
Đây là kết quả của truy vấn:
FirstName | LastName | FormattedRegistrationDate |
---|---|---|
Jane | Williams | Thứ Năm, ngày 20 tháng 6 năm 2019 |
Gabriel | Màu nâu | Thứ Bảy, ngày 2 tháng 2 năm 2019 |
Lora | Dân gian | Thứ Bảy, ngày 5 tháng 11 năm 2016 |
Thảo luận:
Chúng ta có thể thay đổi cách hiển thị một ngày cụ thể bằng hàm FORMAT (). Hàm này nhận hai đối số bắt buộc và một đối số tùy chọn. Trong ví dụ của chúng tôi, chúng tôi chỉ sử dụng hai đối số bắt buộc. Đầu tiên là ngày, có thể từ cột ngày / giờ / ngày giờ hoặc bất kỳ biểu thức nào trả về ngày hoặc giờ. (Trong ví dụ của chúng tôi, chúng tôi sử dụng cột RegistrationDate
.) Đối số thứ hai là một chuỗi chứa định dạng ngày mới. Trong ví dụ của chúng tôi, chúng tôi đã sử dụng 'dddd, dd MMMM, yyyy' :
- dddd - Tên của ngày trong tuần.
- d - Ngày trong tháng, từ ngày 1 đến ngày 31.
- MMMM - Tên đầy đủ của tháng.
- yyyy - Năm có bốn chữ số.
Bảng dưới đây trình bày thêm các mã định dạng ngày / giờ:
specifier | mô tả |
---|---|
d | Ngày trong khoảng 1-31 |
đ | Ngày trong khoảng 01-31 |
ddd | Tên viết tắt của ngày trong tuần |
dddd | Tên đầy đủ của ngày trong tuần |
M | Tháng từ 1 đến 12 |
MM | Tháng từ 01 đến 12 |
MMM | Tên viết tắt của tháng |
MMMM | Tên đầy đủ của tháng |
y | năm 2 chữ số, từ 0 đến 99 |
vâng | năm 2 chữ số từ 00 đến 99 |
yyyy | năm 4 chữ số |
g | Kỷ nguyên (ví dụ:A.D.) |
h | Giờ từ 1 đến 12 (đồng hồ 12 giờ) |
hh | Giờ từ 01 đến 12 (đồng hồ 12 giờ) |
H | Giờ từ 0 đến 23 (đồng hồ 24 giờ) |
HH | Giờ từ 00 đến 23 (đồng hồ 24 giờ) |
m | Phút từ 0 đến 59 |
mm | Phút từ 00 đến 59 |
s | Thứ hai từ 0 đến 59 |
ss | Thứ hai từ 00 đến 59 |
t | Ký tự đầu tiên của SA hoặc CH (ví dụ:9A, 5P) |
tt | SA hoặc CH |
z | Thời gian bù giờ, không có số 0 phía trước (ví dụ:+3) |
zz | Thời gian bù giờ, với số 0 ở phía trước (ví dụ:+03) |
Bạn có thể tìm hiểu thêm trong tài liệu của Microsoft về các định dạng ngày giờ chuẩn và các định dạng tùy chỉnh.
Nếu bạn muốn định dạng ngày này cho một ngôn ngữ và / hoặc quốc gia cụ thể, hãy sử dụng đối số tùy chọn thứ ba: văn hóa . Đối số này là một chuỗi chứa mã văn hóa cho một vùng hoặc quốc gia cụ thể. (Mã văn hóa được tạo thành từ mã ngôn ngữ, dấu gạch ngang và mã quốc gia.) Trong ví dụ dưới đây, chúng tôi sử dụng mã văn hóa cho Đức, mã này kết hợp mã ngôn ngữ Đức ('de') với mã quốc gia cho Đức ('DE'), tức là 'de-DE'. Ngày kết quả được hiển thị bằng tiếng Đức và được định dạng như khán giả Đức muốn xem.
SELECT FirstName, LastName, FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy', 'de-DE') AS FormattedRegistrationDate FROM Patient;
Đây là kết quả của truy vấn này:
FirstName | LastName | Ngày đăng ký |
---|---|---|
Jane | Williams | Donnerstag, 20 Juni, 2019 |
Gabriel | Màu nâu | Samstag, 2 tháng 2, 2019 |
Lora | Dân gian | Samstag, ngày 5 tháng 11 năm 2016 |