Time
không được lưu trữ với định dạng hiển thị trong SQL Server.
Do đó, từ góc độ người dùng, bạn có thể nói rằng nó không có định dạng.
Tất nhiên, điều đó không hoàn toàn chính xác vì nó có định dạng lưu trữ , nhưng với tư cách là một người dùng bình thường, bạn thực sự không thể sử dụng nó.
Điều này đúng với tất cả các loại dữ liệu ngày và giờ:
Date
, DateTimeOffset
, DateTime2
, SmallDateTime
, DateTime
và Time
.
Nếu bạn cần một định dạng thì bạn không cần truyền sang time
nhưng với một char
. Sử dụng Convert
để lấy char
bạn cần:
SELECT CONVERT(char(10), [time], 108) as CSTTime
Đây là một số dữ liệu nền nếu bạn quan tâm:
Trong bài báo xuất bản năm 2000 này, người viết giải thích sâu về cách SQL Server xử lý ngày và giờ. Tôi nghi ngờ liệu có điều gì thay đổi đáng kể từ năm 2000 đến năm 2015 trong cách SQL Server lưu trữ date
không , time
và datetime
giá trị nội bộ.
Dưới đây là các trích dẫn có liên quan, nếu bạn không muốn đọc tất cả:
Vậy SQL Server lưu trữ ngày tháng trong nội bộ như thế nào? Nó sử dụng 8 byte để lưu trữ giá trị datetime — 4 byte đầu tiên cho ngày tháng và 4 byte thứ hai cho thời gian. SQL Server có thể giải thích cả hai bộ 4 byte là số nguyên.
........
........
SQL Server lưu trữ số nguyên thứ hai với thời gian là số đồng hồ tích tắc sau nửa đêm. Một giây chứa 300 tích tắc, vì vậy một tích tắc tương đương với 3,3 mili giây (mili giây).
kể từ time
thực sự được lưu trữ dưới dạng số nguyên 4 byte, nó thực sự không có định dạng như một phần tích hợp của kiểu dữ liệu.
Bạn cũng có thể muốn xem bài viết này để được giải thích chi tiết hơn với các mẫu mã.