我需要爲日期的年份部分添加10年,日期的格式爲yyyy-mm-dd,格式爲2010年訪問過的所有人。以下是我想嘗試的查詢,但我不知道如何使用SQL Server的回滾函數。 Visityear是varchar數據類型。將X年數添加到日期時間變量SQL Server 2008
update myTable
set admitdate=dateadd(yyyy,10,admitdate)
where visitYear='2010'
我需要爲日期的年份部分添加10年,日期的格式爲yyyy-mm-dd,格式爲2010年訪問過的所有人。以下是我想嘗試的查詢,但我不知道如何使用SQL Server的回滾函數。 Visityear是varchar數據類型。將X年數添加到日期時間變量SQL Server 2008
update myTable
set admitdate=dateadd(yyyy,10,admitdate)
where visitYear='2010'
在SQL Server 2008所有查詢都是隱式提交的事務的一部分。我假設你可以使用dateadd函數,你看起來是正確的。因此,要修改以允許回滾,可以執行以下操作 - 雖然不確定何時/爲什麼要回滾,但需要添加該邏輯。
BEGIN TRANSACTION addDateYears
update myTable
set admitdate=dateadd(yyyy,10,admitdate)
where visitYear='2010'
/* IF SOMETHING ROLLBACK TRANSACTION addDateYears */
COMMIT TRANSACTION addDateYears
如果你想這樣做你的桌子上:
BEGIN TRANSACTION
UPDATE dbo.myTable
SET admitdate = DATEADD(YEAR, 10, admitdate)
WHERE visitYear = '2010'
SELECT visityear, admitdate
FROM dbo.myTable
WHERE visitYear = '2010'
ROLLBACK TRANSACTION
當然 - 如果你想實際應用更新,使用COMMIT
代替ROLLBACK
....
這些數據來自2011年。我需要將10年的時間添加到2010年發生的字段中。其中很多錯誤地存儲了2000年。 – wootscootinboogie
如果它是一個日期 - 你應該存儲** **它作爲一個'Date'(或'DateTime') - 那麼你可以很容易地做到這一點,沒有所有的轉換和格式化的麻煩... –
它是日期數據類型,對不起。 – wootscootinboogie
但是爲什麼'VisitYear'是一個'varchar'?你可以很容易地將它做成一個**計算列**,其公式爲「YEAR(admitdate)」並且可以完成它 - SQL Server將自動將年份(作爲INT)保存在那裏給你...... –