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

Lỗi SQL:Việc chuyển đổi kiểu dữ liệu varchar thành kiểu dữ liệu datetime dẫn đến giá trị nằm ngoài phạm vi

Định dạng chuỗi ngày giờ an toàn để sử dụng trong SQL Server là

YYYYMMDD HH:MM:SS hoặc YYYY-MM-DDTHH:MM:SS .

Chuyển đổi bạn có sẽ không thành công nếu ĐẶT DATEFORMAT là dmy. ĐẶT NGÔN NGỮ sẽ tự động đặt định dạng ngày tháng cho bạn. Tôi nghĩ cả germannorwegian sử dụng dmy.

Điều này sẽ không thành công:

set language norwegian

declare @F7 varchar(10) = '26/04/2011'
declare @F8 varchar(10) = '00:09:13'

DECLARE @Date VARCHAR(20)
SET @Date = RIGHT(@F7,4)+'/'+SUBSTRING(@F7,4,2)+'/'+LEFT(@F7,2)

DECLARE @time DATETIME
SET @time =  CONVERT(DATETIME, @Date + ' ' + @F8)

Thay vào đó, hãy làm như vậy (sử dụng YYYY-MM-DDTHH:MM:SS) để an toàn bất kể cài đặt ngôn ngữ / định dạng ngày.

declare @F7 varchar(10) = '26/04/2011'
declare @F8 varchar(10) = '00:09:13'

DECLARE @Date VARCHAR(20)
SET @Date = RIGHT(@F7,4)+'-'+SUBSTRING(@F7,4,2)+'-'+LEFT(@F7,2)

DECLARE @time DATETIME
SET @time =  CONVERT(DATETIME, @Date + 'T' + @F8)


  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 hàm SPACE () hoạt động trong SQL Server (T-SQL)

  2. Cách mã hóa một thủ tục được lưu trữ trong SQL Server

  3. Chọn các hàng vừa chèn

  4. Cấu trúc lại ADO.NET - SqlTransaction so với TransactionScope

  5. Lấy số tuần cho một ngày trong MS SQL Server 2005?