我的第一个问题。我已经搜查了,并且已经接近了。但是,唉,这就是我想要做的。
我在同一个表中有列,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概念,但我无法弄明白。
无论如何,提前感谢您的帮助。
答案 0 :(得分:0)
您可以使用dateadd
和getdate
功能生成所需的日期。尝试这样的东西来测试它:
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))