Sql-Server-2008
“操作數類型沖突”與 DATE 列
我在 SQL Server Management Studio 中輸入以下命令
insert into testtable ([product_name], [price], [expire_date], [expire_time]) values ('Teapot', 10.00, 23/12/2012, '12:35:00')
它產生此錯誤:
操作數類型沖突:int 與日期不兼容
這些是列:
Column name | datatype ----------------+--------------- product_name | varchar(30) price | money expire_date | date expire_time | time(7)
請在日期文字周圍使用字元串分隔符,並儘一切可能避免模棱兩可的區域格式,如
DD/MM/YYYY
. 怎麼樣:insert into dbo.testtable ([product_name], [price], [expire_date], [expire_time]) values ('Teapot', 10.00, '20121223', '12:35:00');
我之所以使用,
YYYYMMDD
是因為除了 withDATE
,YYYY-MM-DD
可能會被誤解。例如DATETIME
:SET LANGUAGE FRENCH; DECLARE @d DATETIME = '2012-12-23';
結果:
消息 242,級別 16,狀態 3
將 varchar 數據類型轉換為 datetime 數據類型創建了一個越界值。
即使使用日期,您的原始格式也可能會導致問題:
SET DATEFORMAT MDY; DECLARE @d DATE = '23/12/2012';
結果:
消息 241,級別 16,狀態 1
從字元串轉換日期和/或時間時轉換失敗。
不要聽起來說教,但請參閱此部落格文章:
還有這個影片:
還有 Tibor 的優秀文章: