Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Błąd przepełnienia arytmetycznego podczas konwersji wyrażenia na typ danych datetime. (podczas wyświetlania daty i godziny..)

Problem polega na tym, że próbujesz convert liczba do datetime , a to po prostu nie działa.

Musisz zmienić swój numeric najpierw do ciągu:

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

Kiedy próbujesz przekonwertować typ liczbowy na datetime , SQL Server próbuje dodać wartość liczbową jako liczbę dni do daty 01-Jan-1900 . W twoim przypadku jest to próba dodania milionów dni i stąd błąd przepełnienia.

CONVERT działa również dobrze, jeśli wolisz:

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

SQL Fiddle z demo.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Replikacja SQL Server wymaga rzeczywistej nazwy serwera, aby nawiązać połączenie z serwerem

  2. Jak edytować tabelę, aby włączyć opcję CASCADE DELETE?

  3. SQL Server:Filtruj dane wyjściowe sp_who2

  4. Monitorowanie oczekiwanej długości życia strony w SQL Server

  5. Jak obliczyć sumę bieżącą w SQL bez użycia kursora?