Cơ sở dữ liệu SQL Server có thể lưu trữ nhiều kiểu dữ liệu khác nhau, chẳng hạn như số, chuỗi văn bản, giá trị Boolean, ngày tháng, v.v. Tuy nhiên, việc lưu trữ và xử lý dữ liệu đó có những đặc điểm riêng. Bài viết hiện tại sẽ tập trung vào việc lưu trữ ngày tháng trong bảng cơ sở dữ liệu SQL Server và chuyển đổi các loại ngày tháng khác nhau sang định dạng SQL Server YYYY-MM-DD và ngược lại.
Hãy bắt đầu!
YYYY-MM-DD - Định dạng Ngày trong Máy chủ SQL
Định dạng dữ liệu SQL Server YYYY-MM-DD đề xuất rằng năm được đánh dấu bằng bốn chữ số, ví dụ:2021. Tháng được chỉ định tiếp theo bằng 2 chữ số từ 1-12 - ví dụ:tháng 6 sẽ là 06. Cuối cùng là ngày trong tháng được trình bày bằng 2 chữ số, chẳng hạn như 20. Như vậy, ngày 06 tháng 6 năm 2021 , sẽ được lưu trữ dưới dạng 2021-06-21. Đây là định dạng YYYY-MM-DD cho ngày tháng trong cơ sở dữ liệu SQL Server.
Trong SQL Server, bạn có thể sử dụng kiểu dữ liệu Date hoặc DateTime để lưu trữ ngày tháng. Sự khác biệt giữa kiểu dữ liệu Date và DateTime nằm ở mức độ chi tiết trong đó cả hai kiểu dữ liệu đều lưu trữ thông tin ngày tháng.
- DateTime kiểu dữ liệu lưu trữ ngày cùng nhau với thời gian thông tin trong giờ , phút và giây .
- Ngày loại dữ liệu chỉ cho phép bạn lưu trữ ngày thông tin mà không có thông tin thời gian.
Ví dụ sau minh họa sự khác biệt giữa kiểu dữ liệu Ngày và Giờ.
Đầu tiên, chúng tôi đang tạo MyDatabase giả cơ sở dữ liệu và một bảng ( Bệnh nhân ) trong đó.
Bệnh nhân bảng có 5 cột:Id, Tên, Giới tính, DOB (Ngày sinh) và DOD (Ngày mất). Loại cột DOB là Ngày, trong khi cột DOD có kiểu dữ liệu DateTime.
CREATE DATABASE MyDatabase
USE MyDatabase
CREATE TABLE Patient
(
Id INT PRIMARY KEY IDENTITY(1,1),
Name VARCHAR (50) NOT NULL,
Gender VARCHAR (50),
DOB Date,
DOD DateTime
)
Tập lệnh sau sẽ chèn một số bản ghi giả vào Bệnh nhân bảng:
INSERT INTO Patient
VALUES ('Jack', 'Male', '1960-12-15', '2017-06-30 16:30:35'),
('Sara', 'Female', '1962-01-20', '2015-02-22 10:35:55'),
('Elisa', 'Female', '1959-03-25', '2020-03-16 22:24:39'),
('Nik', 'Male', '1938-12-15', '2011-06-21 09:45:55'),
('Jos', 'Male', '1940-09-12', '2015-03-25 11:55:20')
Lưu ý sự khác biệt giữa các giá trị được chèn vào cột DOB và cột DOD. Cột DOB có các giá trị ở định dạng YYYY-MM-DD, nhưng đối với cột DOD, bạn chuyển thông tin HH:MM:SS (giờ:phút:giây).
Bây giờ, hãy xem cách Bệnh nhân của chúng tôi bảng ngoại hình. Thực thi tập lệnh SQL sau để chọn tất cả các bản ghi từ bảng Bệnh nhân:
SELECT * FROM Patient
Cách chuyển đổi DateTime sang định dạng ngày YYYY-MM-DD trong SQL Server
Thông thường, chúng ta chỉ cần phần ngày tháng từ DateTime cột. Vì các giá trị ngày tháng được lưu trữ trong SQL Server ở định dạng YYYY-MM-DD theo mặc định, trích xuất phần ngày tháng từ kiểu dữ liệu DateTime trả về ngày tháng ở định dạng này .
Hãy xem một ví dụ. DOD trong cột Bệnh nhân bảng lưu trữ các giá trị trong DateTime định dạng. Hãy xem cách trích xuất Ngày một phần từ cột:
SELECT CAST(DOD AS DATE) AS DOD_Date
FROM Patient
Như bạn có thể thấy từ tập lệnh ở trên, để chuyển đổi cột loại DateTime thành Date , bạn có thể sử dụng CAST hàm số. Bạn cần chuyển tên cột theo sau là AS và tuyên bố DATE nhập vào CAST chức năng.
Đây là kết quả tập lệnh của bạn:các giá trị từ cột DOD được chọn và chuyển đổi thành định dạng YYYY-MM-DD.
Hãy chọn cả DOD ban đầu giá trị cột và DOD được chuyển đổi các giá trị để chứng minh sự khác biệt giữa chúng:
SELECT DOD as DOD, CAST(DOD AS DATE) AS DOD_Date
FROM Patient
Cuối cùng, nếu bạn muốn chọn tất cả các cột trong bảng của mình và chỉ truyền một cột duy nhất (ví dụ:chuyển đổi cột DOD thành loại Ngày), bạn có thể chạy tập lệnh sau:
SELECT t.*, CAST(DOD AS DATE) AS DOD_Date
from Patient t
Trong đầu ra, bạn có thể thấy tất cả các cột của bảng cùng với cột DOD_Date có chứa phần Ngày từ cột DOD.
Cách chuyển đổi chuỗi sang định dạng ngày của máy chủ SQL YYYY-MM-DD
Ngày thường được lưu trữ ở định dạng chuỗi trong các cột của bảng SQL Server. Bạn có thể chuyển đổi các giá trị chuỗi sang định dạng ngày của Máy chủ SQL YYYY-MM-DD.
Hãy tạo một cột khác trong Bệnh nhân của chúng tôi bàn. Tên của cột là Arriv_Date (cột giả hiển thị ngày đến của bệnh nhân) và loại cột là VARCHAR . Thực thi tập lệnh sau để tạo cột này:
ALTER TABLE Patient
ADD Arriv_Date varchar(50);
Bạn nhận được Arriv_Date mới được thêm vào cột Bệnh nhân cột. Hiện tại, Arriv_Date cột chứa NULL giá trị.
SELECT * FROM Patient
Bây giờ chúng ta hãy thêm một số bản ghi vào Arriv_Date cột. Tập lệnh sau sẽ chèn các chuỗi ở các định dạng ngày tháng khác nhau vào cột này.
UPDATE Patient SET Arriv_Date = '10-Nov-2012' WHERE Id = 6
UPDATE Patient SET Arriv_Date = 'March 31, 2015' WHERE ID = 7
UPDATE Patient SET Arriv_Date = '12/02/2020' WHERE ID = 8
UPDATE Patient SET Arriv_Date = '10 October 2020' WHERE ID = 9
UPDATE Patient SET Arriv_Date = '15/10/21' WHERE ID = 10
Bây giờ, hãy xem dữ liệu như thế nào trong Arriv_Date cột trông. Thực thi tập lệnh bên dưới:
SELECT * FROM Patient
Để chuyển đổi tất cả các chuỗi trong Arriv_Date thành định dạng ngày của Máy chủ SQL YYYY-MM-DD , bạn có thể sử dụng lại CAST hàm số. Bạn cần chỉ định tên cột theo sau là AS và tuyên bố DATE loại.
Tập lệnh sau chọn Arriv_Date ban đầu và các giá trị trong đó được chuyển đổi thành định dạng ngày tháng.
Select Arriv_Date, CAST(Arriv_Date as DATE) as ARRIVAL_DATE
FROM Patient
Kết quả hiển thị các giá trị ở các định dạng ngày tháng khác nhau. Cột loại chuỗi Arriv_Date được chuyển đổi thành YYYY-MM-DD định dạng trong ARRIVAL_DATE cột:
Cách chuyển đổi định dạng ngày của máy chủ SQL YYYY-MM-DD thành các định dạng khác
Cũng như bạn có thể chuyển đổi các định dạng khác sang YYYY-MM-DD, bạn có thể làm ngược lại. Để chuyển đổi YYYY-MM-DD định dạng ngày thành chuỗi với các định dạng ngày khác nhau, bạn có thể sử dụng hàm CONVERT.
Hàm CONVERT chấp nhận ba tham số:loại đích là VARCHAR (50) trong tập lệnh sau, cột ngày ban đầu và mã. Mã xác định ngày được chuyển đổi sẽ như thế nào. Ở đây, giá trị mã 105 chuyển đổi ngày thành định dạng DD-MM-YYYY.
Chạy tập lệnh để chuyển đổi ngày từ định dạng YYYY-MM-DD thành DD-MM-YYYY:
SELECT DOB, CONVERT(varchar(50), DOB ,105) as DOB_CONV
From Patient
Đây là kết quả:
Hãy xem một ví dụ khác. Giá trị mã 106 cho ngày được chuyển đổi sẽ chuyển đổi ngày từ định dạng YYYY-MM-DD sang định dạng DD MON YYYY. Ví dụ, trong cột đầu tiên, ngày 1960-12-15 được chuyển đổi thành ngày 12-12-1960.
SELECT DOB, CONVERT(varchar(50), DOB ,106) as DOB_CONV
From Patient
Tương tự, giá trị mã là 6 chuyển đổi một ngày thành định dạng DD MON YY:
SELECT DOB, CONVERT(varchar(50), DOB ,6) as DOB_CONV
From Patient
Và cuối cùng, giá trị mã 11 chuyển đổi ngày thành định dạng YYYY / MM / DD:
SELECT DOB, CONVERT(varchar(50), DOB ,111) as DOB_CONV
From Patient
Để xem thêm chi tiết về tất cả các định dạng ngày tháng khác nhau và mã tương ứng, hãy tham khảo tài liệu SQL Server chính thức.
Kết luận
Bằng cách này, chúng tôi đã làm rõ cả bản chất của định dạng ngày tháng của máy chủ SQL YYYY-MM-DD và các trường hợp cụ thể của việc chuyển đổi ngày tháng sang định dạng này và ngược lại.
Chúng tôi đã học cách sử dụng hàm CAST để chuyển đổi các kiểu dữ liệu khác nhau bao gồm DateTime và chuỗi sang định dạng YYYY-MM-DD và hàm CONVERT để chuyển ngày YYYY-MM-DD sang các định dạng khác.
Bên cạnh đó, các công cụ hiện đại dành cho các chuyên gia SQL Server giúp công việc chỉnh sửa ngày tháng trở nên đơn giản hơn rất nhiều. Ví dụ:dbForge Studio đa tính năng cho SQL Server bao gồm, trong số các tùy chọn còn lại, một Trình chỉnh sửa dữ liệu trực quan tiện dụng mà bạn có thể sử dụng khi làm việc với ngày tháng trong SQL Server.
Hy vọng thông tin này hữu ích cho bạn. Giữ nguyên!