如何批量更新日期列

时间:2016-06-13 20:36:15

标签: sql-server

我有一张包含10000条记录的表。

样品

Id  Transaction_Id  Contract_Id Contractor_Id   ServiceDetail_Id    ServiceMonth    UnitsDelivered  CreateDate
----------------------------------------------------------------------------------------------------------------------------
1   1   352 466 590 2016-03-01  203 2016-04-25 17:01:55.000
2   1   352 466 566 2016-03-01  200 2016-04-25 17:02:38.807
3   1   352 466 138 2016-04-13  20  2016-04-13 00:00:00.000
5   1   352 466 138 2016-04-14  21  2016-04-13 00:00:00.000
6   10011   40  460 68  2016-03-17  10  2016-04-25 17:20:13.413
7   10011   40  460 511 2016-03-17  15  2016-04-25 17:20:13.413
8   10011   40  460 1611    2016-03-17  20  2016-04-25 17:20:13.413
9   20011   352 466 2563    2016-02-05  10  2016-04-25 17:20:25.307
11  100 40  460 68  2016-03-17  10  2016-04-25 17:29:23.653

在此表中,servicemonth有不同的日期。

我想将servicemonth列更新为上个日期的现有月份。

  • 假设我在表中有2016-03-17,则应更新为2016-3-31
  • 如果表中有2016-05-12,则应更新为2016-5-31

有人可以建议单个查询来更新吗?

2 个答案:

答案 0 :(得分:1)

  

EOMONTH:返回包含指定日期的月份的最后一天,并带有可选的偏移量。

UPDATE ... SET servicemonth = EOMONTH(servicemonth)

答案 1 :(得分:1)

Update  servicemonth  
set servicemonth = DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))

- 将getdate()替换为您希望该月结束日期的日期列