【问题标题】:Insert into a colum the month/day/currentyear that is the same month/day as a previous column在列中插入与上一列相同的月/日的月/日/当年
【发布时间】:2014-03-13 23:53:09
【问题描述】:

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

我在同一个表中有你的列,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 概念,但我无法弄清楚。

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

【问题讨论】:

  • 什么平台?我认为答案在某种程度上是特定于实现的。
  • @500-InternalServerError 该问题指出 MS SQL 2008R2 具有 2005 db。
  • @jpw:现在可以了 :)(或者我第一次错过了)。
  • 不...我编辑了帖子。对不起,那 500 个。

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


【解决方案1】:

您可以使用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)) 

【讨论】:

  • 好吧,我已经尝试过很多次了,当我使用更新语句时,我继续收到“从字符串转换日期和/或时间时转换失败。”
  • 但我将其标记为正确的 FWIW。它回答了这个问题并帮助我从那里继续前进。感谢 JPW。
  • @NWHikerOR 很高兴能得到一些帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-10
  • 2017-05-25
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多