Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kesalahan overflow aritmatika mengonversi ekspresi ke tipe data datetime. (sambil menampilkan tanggal waktu..)

Masalah Anda adalah Anda mencoba untuk convert numerik menjadi datetime , dan ini tidak berhasil.

Anda perlu mengubah numeric menjadi string terlebih dahulu:

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

Saat Anda mencoba dan mengonversi tipe numerik menjadi datetime , SQL Server mencoba menambahkan nilai numerik sebagai jumlah hari hingga tanggal 01-Jan-1900 . Dalam kasus Anda, ini mencoba menambahkan jutaan hari, dan karenanya kesalahan luapan.

CONVERT juga berfungsi dengan baik, jika Anda mau:

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

SQL Fiddle dengan 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. SQL pilih maks (tanggal) dan nilai yang sesuai

  2. Sintaks salah di dekat 'GO'

  3. Menghindari injeksi SQL tanpa parameter

  4. SEPERTI vs BERISI di SQL Server

  5. Mengembalikan beberapa tabel dari prosedur tersimpan