我知道解决方法是DATEADD用于两种数据类型.我想理解为什么语言设计者选择为一种数据类型而不是另一种数据类型定义此运算符?
当你尝试直接使用加号运算符 DATE
DECLARE @tomorrow DATE = CONVERT(DATE, GETDATE()) + 1
Run Code Online (Sandbox Code Playgroud)
你收到此错误信息:
消息206,级别16,状态2,行1
操作数类型冲突:日期与int不兼容
但是,您可以向a添加一个整数DATETIME,并且可以隐式地将其转换DATETIME为DATE没有错误的整数:
DECLARE @thisTimeTomorrow DATETIME = GETDATE() + 1
DECLARE @tomorrow DATE = GETDATE() + 1
Run Code Online (Sandbox Code Playgroud)