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

Perbaiki "tanggal tidak kompatibel dengan int" di SQL Server saat Menambah atau Mengurangi dari Tanggal

Jika Anda mendapatkan pesan kesalahan "Msg 206" yang berbunyi "Operand type clash:date is incompatible with int" di SQL Server saat mencoba menambahkan (atau mengurangi) tanggal, itu mungkin karena Anda mencoba melakukan aritmatika antara integer dan date nilai.

Untuk memperbaiki masalah ini, ubah date nilai ke datetime nilai atau gunakan DATEADD() fungsi.

Contoh Kesalahan

Berikut contoh kode yang menghasilkan kesalahan:

DECLARE @date date;
SET @date = '2035-10-15';
SELECT @date + 1;

Hasil:

Msg 206, Level 16, State 2, Line 3
Operand type clash: date is incompatible with int

Dalam hal ini, saya mendeklarasikan variabel sebagai nilai tanggal, menetapkan nilai, lalu saya mencoba menambahkan bilangan bulat ke tanggal tersebut.

Solusi 1

Salah satu cara untuk memperbaiki masalah ini adalah dengan menggunakan datetime nilai alih-alih date nilai:

DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT @date + 1;

Hasil:

2035-10-16 00:00:00.000

Ini jelas memiliki efek memasukkan nilai waktu (yang mungkin tidak perlu). Kami dapat mengonversi hasilnya kembali ke date nilai menggunakan CONVERT() atau CAST() :

DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT CAST(@date + 1 AS date);

Hasil:

2035-10-16

Solusi 2

Cara lain untuk memperbaiki masalah ini adalah dengan menggunakan DATEADD() fungsi untuk melakukan aritmatika:

DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(day, 1, @date);

Hasil:

2035-10-16

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa yang dilakukan kueri ini untuk membuat daftar SQL Server yang dibatasi koma?

  2. Perbedaan antara #temptable dan ##TempTable?

  3. Dukungan Spotlight Cloud untuk Pengumuman Azure SQL DB (Pratinjau)

  4. Cara menggunakan klausa Where dalam Select Statement di SQL Server - Tutorial SQL Server / TSQL Bagian 109

  5. MultipleActiveResultSets=Benar atau beberapa koneksi?