在日期时间日期中替换年份



我的Select中有一个表,其中有一列(dateDT(,格式为datetime,还有一个年份变量输入(@selYear(,格式是int。

如何用变量输入替换表中日期内的年份,并以日期时间格式返回结果(在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)

您可以在sqlserver 2012 中使用DATEFROMPRTS

DECLARE @selYear int = 2014
DECLARE @dateDT datetime = '2010-05-02'
SELECT DATEFROMPARTS(@selYear, 
                     DATEPART(m, @dateDT), 
                     DATEPART(d, @dateDT))
SELECT REPLACE(dateDT, DATEPART(year, dateDT), @selYear)

相关内容

  • 没有找到相关文章

最新更新