Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Không thể lưu trữ các định dạng ngày giờ nhất định trong SQL Server

SQL Server không lưu trữ DateTime ở bất kỳ định dạng chuỗi nào - nó được lưu trữ dưới dạng giá trị số 8 byte.

Các cài đặt khác nhau (ngôn ngữ, định dạng ngày) chỉ ảnh hưởng đến cách DateTime được hiển thị cho bạn trong SQL Server Management Studio - hoặc cách nó được phân tích cú pháp khi bạn cố gắng chuyển đổi một chuỗi thành DateTime .

Có nhiều định dạng được SQL Server hỗ trợ - xem MSDN Sách Trực tuyến trên CAST và CHUYỂN ĐỔI . Hầu hết các định dạng đó đều phụ thuộc về những cài đặt bạn có - do đó, những cài đặt này đôi khi có thể hoạt động - và đôi khi không.

Cách giải quyết vấn đề này là sử dụng định dạng ngày ISO-8601 được SQL Server hỗ trợ - định dạng này luôn hoạt động luôn - bất kể cài đặt định dạng ngày và ngôn ngữ SQL Server của bạn.

Định dạng ISO-8601 được hỗ trợ bởi SQL Server có hai phiên bản:

  • YYYYMMDD chỉ dành cho ngày tháng (không có phần thời gian) - lưu ý ở đây: không có dấu gạch ngang! , điều đó rất quan trọng! YYYY-MM-DD KHÔNG độc lập với cài đặt định dạng ngày trong SQL Server của bạn và sẽ KHÔNG hoạt động trong mọi tình huống!

hoặc:

  • YYYY-MM-DDTHH:MM:SS cho ngày và giờ - lưu ý ở đây:định dạng này dấu gạch ngang.

Điều này hợp lệ cho SQL Server 2000 và mới hơn.

Nếu bạn sử dụng SQL Server 2008 và DATE kiểu dữ liệu (chỉ DATE - không DATETIME !), thì bạn thực sự cũng có thể sử dụng YYYY-MM-DD và điều đó cũng sẽ hoạt động với bất kỳ cài đặt nào trong SQL Server của bạn.

Đừng hỏi tôi tại sao toàn bộ chủ đề này rất phức tạp và hơi khó hiểu - đó chỉ là cách của nó. Nhưng với YYYYMMDD , bạn sẽ ổn đối với bất kỳ phiên bản SQL Server nào cũng như đối với bất kỳ cài đặt ngôn ngữ và định dạng ngày tháng nào trong SQL Server của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:Mẹo hữu ích cho người mới

  2. Làm thế nào để chờ trong 2 giây?

  3. Nhập 'xml' vào Sql Server

  4. Hợp nhất nhiều cột trong một, duy trì sự giống nhau và thay thế sự khác biệt

  5. Khắc phục:“Không cho phép câu lệnh BACKUP LOG trong khi mô hình khôi phục là ĐƠN GIẢN” trong SQL Server (và SQL Edge)