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ờ. (trong khi hiển thị ngày giờ ..)

Vấn đề của bạn là bạn đang cố gắng convert số cho một datetime và điều này không hoạt động.

Bạn cần chuyển numeric thành một chuỗi trước:

declare @yr_mnth_dt as numeric;
set @yr_mnth_dt = 20130822;

select yr_mnth_dt = cast(cast(@yr_mnth_dt as char(8)) as datetime);

SQL Fiddle với bản trình diễn.

Khi bạn thử và chuyển đổi kiểu số thành datetime , SQL Server cố gắng thêm giá trị số dưới dạng số ngày vào ngày 01-Jan-1900 . Trong trường hợp của bạn, điều này đang cố gắng thêm hàng triệu ngày và do đó xảy ra lỗi tràn.

CONVERT cũng hoạt động tốt, nếu bạn thích:

select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));

SQL Fiddle với bản trình diễ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. Bạn có đang sử dụng đúng công cụ giám sát hiệu suất cơ sở dữ liệu không?

  2. Cách khắc phục “tên hồ sơ không hợp lệ” khi cập nhật hồ sơ thư cơ sở dữ liệu trong SQL Server (T-SQL)

  3. Cách Chèn kết quả của một thủ tục đã lưu trữ vào một bảng tạm thời trong SQL Server

  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. Cách trích xuất hoặc chuyển đổi dữ liệu thời gian từ một chuỗi trong SQL Server