我有一个表,其中包含一列(dateDT
),格式为日期时间,而我的Select中年份的变量输入(@selYear
),格式为int。
如何使用变量输入替换表中日期中的年份,并以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)
关于sql - 替换日期时间中的年份,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23350048/