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

Ngày của máy chủ SQL Định dạng phụ thuộc vào người dùng?

Nếu bạn cần chỉ định ngày giờ bằng cách sử dụng chuỗi, bạn nên sử dụng an toàn , định dạng độc lập với ngôn ngữ.

Trong SQL Server, đó là định dạng ISO-8601 (được điều chỉnh một chút) và về cơ bản nó hỗ trợ hai định dạng an toàn cho DATETIME luôn hoạt động - bất kể cài đặt ngôn ngữ, khu vực và định dạng ngày của bạn là gì:

YYYYMMDD              (e.g. 20121231  for 31st of December 2012)  if you need date only

YYYY-MM-DDTHH:mm:ss   (e.g. 2012-12-31T21:05:00 for 31st of December 2012, 9:05pm)

Lưu ý:

  • định dạng chỉ ngày đầu tiên có không có dấu gạch ngang hoặc dấu phân cách!

  • định dạng thứ hai có dấu gạch ngang cho ngày (cũng có thể được bỏ qua) và có một T cố định làm dấu phân cách giữa ngày và phần thời gian của chuỗi

Cập nhật: theo nhận xét cuối cùng của bạn (về các ngôn ngữ mặc định khác nhau cho hai người dùng) - hãy thử điều này:

-- this is how your `SA` interprets the string as datetime....
SET LANGUAGE english
SELECT CAST('2012-11-30 23:59' AS DATETIME)   

Hoạt động tốt ...

-- this is how your British user interprets teh string as datetime
SET LANGUAGE british
SELECT CAST('2012-11-30 23:59' AS DATETIME)

Điều này cố gắng giải thích chuỗi là ngày 11 của tháng 30 năm 2012 và rõ ràng, điều đó không thành công ....



  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 Chèn hàng loạt tệp CSV với dấu ngoặc kép không nhất quán

  2. Biểu thức chính quy để xác thực tên bảng SQL Server

  3. Tôi nhận được Một nỗ lực đã được thực hiện để tải một chương trình có lỗi định dạng không chính xác trên một dự án sao chép SQL Server

  4. CHỌN MỘT Hàng có giá trị MAX () trên một cột

  5. .NET SqlDependency với nhiều thông báo so với bỏ phiếu tỷ lệ cao?