我有一个带有列(dateDT)的表,格式为日期时间,@selYear在我的Select中有一个年份()的变量输入,格式为int。
dateDT
@selYear
如何使用变量输入替换表中日期中的年份,并以datetime格式(在Select中)返回结果?
我尝试了以下操作,但是返回错误的日期/年份:
CONVERT(DATETIME, (@selYear + MONTH(dateDT) + DAY(dateDT))) AS dateDT,
例子:
@selYear = 2014 dateDT = 2010-05-02 00:00:00.000
在这种情况下,我的结果应该是:
dateDT = 2014-05-02 00:00:00.000
使用DATEADD函数的解决方案:
DECLARE @selYear VARCHAR(4) = 2014 DECLARE @dateDT DATETIME = '2010-05-02 00:00:00.000' SELECT DATEADD(YEAR,@selYear - YEAR(@dateDT),@dateDT)
这是一个比当前年份小的年份的示例:
DECLARE @selYear INT = 2009 DECLARE @dateDT DATETIME = '2010-05-02 00:00:00.000' SELECT DATEADD(YEAR,@selYear - YEAR(@dateDT),@dateDT)