如何在sql查询

时间:2017-04-05 05:25:24

标签: sql sql-server dateadd

马布海!

是否有更新日期的短代码,额外的2年和月末?

样品: 开户:2017-04-04
有效期:2019-04-30

UPDATE dbname SET [Expiry] = DateAdd(year,2,[AccountOpened]) 

不添加此UPDATE dbname SET [Expiry] = DateAdd(mm,1,[AccountOpened]) 因为它会增加1个月而不是上个月的日期。

由于

3 个答案:

答案 0 :(得分:1)

如果您正在使用SQLSERVER以下脚本将给出欲望结果。在执行UPDATE操作之前,请回收原始数据。

UPDATE dbname 
SET [Expiry] = DATEADD(d,-1,DATEADD(m,DATEDIFF(m,0, (DATEADD(YY,2,AccountOpened))) + 1,0))

答案 1 :(得分:1)

这适用于Sql Server(我认为是任何版本)

UPDATE dbName
SET [Expiry] = DATEADD(MONTH, ((YEAR([AccountOpened]) - 1898) * 12) + MONTH([AccountOpened]), -1)

I made a fiddle

对于Sql Server 2012+,您可以简单地:

UPDATE dbName SET [Expiry] = EOMONTH([AccountOpened], 24)

对于MySql(我猜你没有使用,因为你在你的字段中使用括号,但在这里它仍然是):

UPDATE dbName SET Expiry = LAST_DAY(DATE_ADD(AccountOpened, INTERVAL 2 YEAR))    

答案 2 :(得分:0)

您在寻找此查询吗?

CAST(GETDATE()AS DATE)和DATEADD(白天, +/-数字,CAST(GETDATE()AS DATE)之间的子句= CAST([CustomDate2] AS DATE)

SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,"your date")+1,0))

LastDay_AnyMonth 结果集: LastDay_AnyMonth --------

  

2007-08-31 23:59:59.000