sql >> Databasteknik >  >> RDS >> Sqlserver

Aritmetiskt spillfel vid konvertering av uttryck till datatyp datetime. (medan datum och tid visas..)

Problemet är att du försöker convert det numeriska till en datetime , och det här fungerar bara inte.

Du måste ändra din numeric i en sträng först:

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 med demo.

När du försöker konvertera en numerisk typ till en datetime , SQL Server försöker lägga till det numeriska värdet som antalet dagar till datumet 01-Jan-1900 . I ditt fall försöker detta lägga till miljontals dagar, och därav överflödesfelet.

CONVERT fungerar också bra, om du föredrar:

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

SQL Fiddle med demo.



  1. ERD-notationer i datamodellering

  2. Komma igång med Postgres 13 på Ubuntu 20.04

  3. Infoga om det inte finns, annars returnerar id i postgresql

  4. Hur får man en lista över MySQL-vyer?