首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >eomonth operand type clash (Msg 2016)

eomonth operand type clash (Msg 2016)
EN

Stack Overflow用户
提问于 2019-07-19 13:59:29
回答 2查看 123关注 0票数 1
代码语言:javascript
复制
DECLARE @DateMin AS date = DATEFROMPARTS(2019, 7, 19);
DECLARE @DateTimeMax AS datetime = EOMONTH(@DateMin)+1;

错误信息:

2016年Msg,16级。 操作数类型冲突。日期与int不兼容。

错误发生在第二行。使用Server 2016。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-19 14:22:05

在Server中,可以将数字添加到datetime以添加天数,但不能添加到date。因此,如果坚持这个结构,您可以通过两种方式解决这个问题:

代码语言:javascript
复制
DECLARE @DateMin datetime = DATEFROMPARTS(2019, 7, 19);
-----------------^ change type to datetime
DECLARE @DateTimeMax datetime = DATEADD(DAY, 1, EOMONTH(@DateMin));

或者:

代码语言:javascript
复制
DECLARE @DateMin date = DATEFROMPARTS(2019, 7, 19);
DECLARE @DateTimeMax datetime = CONVERT(datetime, DATEADD(DAY, 1, EOMONTH(@DateMin)));
--------------------------------^ add explicit conversion

我确实认为dateadd(day, )是一个更好的解决方案,因为它的意图更加明确。

票数 1
EN

Stack Overflow用户

发布于 2019-07-19 14:02:14

错误告诉您问题所在,dateint是不兼容的。使用DATEADD

代码语言:javascript
复制
DECLARE @DateMin AS date = DATEFROMPARTS(2019, 7, 19);
DECLARE @DateTimeMax AS datetime = DATEADD(DAY, 1, EOMONTH(@DateMin));
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57114085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档