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