在列中插入与前一列相同的月/日/当前年份

时间:2014-03-13 23:53:09

标签: sql sql-server-2005 sql-server-2008-r2

我的第一个问题。我已经搜查了,并且已经接近了。但是,唉,这就是我想要做的。

我在同一个表中有列,Date1,Date2,Date3。

我想从Date1获取日期,并将当月的相同月份和年份插入Date2。例如,如果Date1为02/01 / 2007 ,我想将02/01 / 2014 插入Date2。然后在Date3中插入距离Date2 60天的日期。

当前

Date1             Date2           Date3
02/01/2007        NULL            NULL  
08/15/2009        NULL            NULL  
12/15/2011        NULL            NULL  

期待

Date1             Date2           Date3
02/01/2007        02/01/2014      04/01/2014 
08/15/2009        08/15/2014      10/15/2014
12/15/2011        12/15/2014      02/15/2014  

我认为真的如此。我希望我没有留下任何东西。 FWIW,我正在使用UPDATE概念,但我无法弄明白。

无论如何,提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用dateaddgetdate功能生成所需的日期。尝试这样的东西来测试它:

declare @d1 date
set @d1 = '02/01/2007'

select 
    @d1 as d1, 
    dateadd(YEAR, year(getdate())-year(@d1), @d1) as d2, 
    dateadd(day, 59, dateadd(YEAR, year(getdate())-year(@d1), @d1)) as d3

这将返回:

d1         d2         d3
---------- ---------- ----------
2007-02-01 2014-02-01 2014-04-01

您可能需要将参数微调到dateadd以获得您想要的结果。

要使其适应更新语句,您可以执行以下操作:

update myTable
    set date 2 = dateadd(YEAR, year(getdate())-year(date1), date1) , 
    date3 = dateadd(day, 59, dateadd(YEAR, year(getdate())-year(date1), date1))