DECLARE @DateMin AS date = DATEFROMPARTS(2019, 7, 19);
DECLARE @DateTimeMax AS datetime = EOMONTH(@DateMin)+1;
错误消息:
信息2016,级别16。
操作数类型冲突。日期与int不兼容。
第二行出现错误。 使用SQL Server 2016。
答案 0 :(得分:4)
错误告诉您问题所在,date
和int
不兼容。使用DATEADD
:
DECLARE @DateMin AS date = DATEFROMPARTS(2019, 7, 19);
DECLARE @DateTimeMax AS datetime = DATEADD(DAY, 1, EOMONTH(@DateMin));
答案 1 :(得分:1)
在SQL Server中,可以将数字添加到datetime
以添加天数,但是不能添加到date
。因此,如果您坚持使用此构造,则可以通过两种方式解决此问题:
DECLARE @DateMin datetime = DATEFROMPARTS(2019, 7, 19);
-----------------^ change type to datetime
DECLARE @DateTimeMax datetime = DATEADD(DAY, 1, EOMONTH(@DateMin));
或者:
DECLARE @DateMin date = DATEFROMPARTS(2019, 7, 19);
DECLARE @DateTimeMax datetime = CONVERT(datetime, DATEADD(DAY, 1, EOMONTH(@DateMin)));
--------------------------------^ add explicit conversion
我确实认为dateadd(day, )
是更好的解决方案,因为其意图更加明确。