TIMESTAMP
của SQL Server loại dữ liệu không có không có gì để làm với ngày và giờ!
Nó chỉ là một biểu diễn thập lục phân của một số nguyên 8 byte liên tiếp - nó chỉ tốt để đảm bảo một hàng không thay đổi kể từ khi nó được đọc.
Bạn có thể đọc số nguyên thập lục phân hoặc nếu bạn muốn một BIGINT
. Ví dụ:
SELECT CAST (0x0000000017E30D64 AS BIGINT)
Kết quả là
400756068
Trong các phiên bản SQL Server mới hơn, nó được gọi là RowVersion
- vì nó thực sự là như vậy. Xem tài liệu MSDN trên ROWVERSION:
Là một kiểu dữ liệu hiển thị các số nhị phân duy nhất, được tạo tự động trong cơ sở dữ liệu. rowversion thường được sử dụng như một cơ chế cho các hàng trong bảng dập phiên bản. Loại dữ liệu chuyển đổi chỉ là một số tăng dần và không bảo tồn ngày hoặc giờ . Để ghi ngày hoặc giờ, hãy sử dụng loại datetime2data.
Vì vậy, bạn không thể chuyển đổi máy chủ SQL TIMESTAMP
đến ngày / giờ - nó không phải là ngày / giờ.
Nhưng nếu bạn đang nói dấu thời gian nhưng thực sự thì bạn có nghĩa là DATETIME
- sau đó bạn có thể sử dụng bất kỳ định dạng ngày hợp lệ nào được mô tả trong chủ đề ĐÚC và CHUYỂN ĐỔI trong trợ giúp MSDN. Chúng được xác định và hỗ trợ "out of the box" bởi SQL Server. Bất kỳ thứ gì khác không được hỗ trợ, ví dụ:bạn phải thực hiện nhiều quá trình truyền và nối thủ công (không được khuyến nghị).
Định dạng bạn đang tìm kiếm hơi giống với ODBC canonical (style =121):
DECLARE @today DATETIME = SYSDATETIME()
SELECT CONVERT(VARCHAR(50), @today, 121)
cho:
2011-11-14 10:29:00.470
SQL Server 2012 cuối cùng sẽ có FORMAT
chức năng để thực hiện định dạng tùy chỉnh ......