为 1 列更新 200 万行

Update 2 million rows for 1 column

我有一个 table 大约有 200 万条记录。我必须遍历每条记录并更新生效日期。我需要将每个日期的日期设置为每月的第一天。

如果当前日期是该月的第一天,则忽略。

    07/01/2018    
    07/21/2018 => 07/01/2018
    08/11/2018 => 08/01/2018

目前,我正在将其编写为 C# 程序,而且它花费的时间太长了。 有更好的解决方案吗?

只需使用 DATEADD()DATEDIFF() 组合即可获得月份的第一天

UPDATE t
SET    datecol = DATEADD(MONTH, DATEDIFF(MONTH, '1900-01-01', datecol), '1900-01-01')
FROM   yourtable t;

它可以像这样简单:

Update myTable 
    set myDate = DateAdd(day, 1-Day(myDate), myDate)
where day(myDate) > 1;