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

Lỗi tràn số học khi chuyển đổi biểu thức thành kiểu dữ liệu ngày giờ

Ngày 31 tháng 9 không phải là một ngày, vì vậy SQL không thể chuyển đổi nó thành một ngày.

Ngoài ra, bạn nên mã hóa ngày tháng ở định dạng kiểm tra văn hóa cụ thể (yyyyMMdd). 01/08/2012 có thể chuyển đổi thành ngày 1 tháng 8 trên Máy chủ của bạn, nhưng chạy trên máy chủ khác và có thể là ngày 8 tháng 1. 20120801 sẽ chuyển đổi sang ngày 1 tháng 8 trên tất cả máy móc.

Ngoài ra, Tại sao bạn chuyển đổi ngày thành NVARCHAR ? Bạn đang xóa bất kỳ lợi ích nào trong số các chỉ số mà bạn có, đồng thời thực hiện các chuyển đổi ngầm và rõ ràng không cần thiết. Giả sử MESSAGEINSERTDATE là Cột DATETIME mà bạn chỉ có thể sử dụng

WHERE MESSAGEINSERTDATE BETWEEN '20120801' AND '20120930'

Nếu bạn cần xóa thời gian khỏi MESSAGEINSERTDATE sử dụng

CAST(MESSAGEINSERTDATE AS DATE)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. URL kết nối jTDS JDBC với MS SQL Server 2005 Express là gì

  2. Tổng hợp chuỗi được nhóm / LISTAGG cho SQL Server

  3. LOG () Ví dụ trong SQL Server

  4. Tạo tập lệnh trong SQL Server Management Studio

  5. 5 cách lấy tên tháng ngắn từ ngày trong SQL Server