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

Lỗi chuyển đổi khi chuyển đổi 'nvarchar' thành 'datetime' trong máy chủ sql

Có nhiều định dạng được SQL Server hỗ trợ - xem MSDN Books Online trên CASTCONVERT . 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 điều chỉnh một chút) đượ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ỉ 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 (nhưng chúng có thể được bỏ qua) và một T cố định làm dấu phân cách giữa phần ngày và giờ trong DATETIME của bạn .

Đ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 trở lên 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 và đố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.

Khuyến nghị cho SQL Server 2008 và mới hơn là sử dụng DATE nếu bạn chỉ cần phần ngày và DATETIME2(n) khi bạn cần cả ngày và giờ. Bạn nên thử bắt đầu loại bỏ DATETIME kiểu dữ liệu nếu có thể



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách giải quyết không thể chuyển đổi lỗi mã hóa khi chèn XML vào SQL Server

  2. Thuộc tính ConnectionString chưa được khởi tạo lỗi trong VB.NET

  3. Cách kết nối Python với SQL Server để tự động hóa quy trình phụ trợ

  4. Làm cách nào tôi có thể xem tất cả các ký tự đặc biệt được phép trong trường varchar hoặc char trong SQL Server?

  5. Nhận danh sách tài khoản thư cơ sở dữ liệu trong SQL Server (T-SQL)