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.