sql >> Database teknologi >  >> RDS >> Sqlserver

Aritmetisk overløbsfejl ved konvertering af udtryk til datatype datetime. (mens dato og klokkeslæt vises..)

Dit problem er, at du forsøger at convert det numeriske til en datetime , og dette virker bare ikke.

Du skal ændre din numeric ind i en streng 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 prøver at konvertere en numerisk type til en datetime , forsøger SQL Server at tilføje den numeriske værdi som antallet af dage til datoen 01-Jan-1900 . I dit tilfælde forsøger dette at tilføje millioner af dage, og dermed overløbsfejlen.

CONVERT fungerer også fint, hvis du foretrækker det:

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

SQL Fiddle med demo.



  1. PostgreSQL fejl 'Kunne ikke oprette forbindelse til server:Ingen sådan fil eller mappe'

  2. Dynamisk (kolonnebaseret) interval

  3. Sådan indstilles MariaDB til at bruge vertikalt output

  4. Sådan returneres en liste over gyldige tidszoner i Oracle-databasen