1

2010年に訪問したすべての人のために、日付の年の部分にyyyy-mm-ddの形式で保存された日付に10年を追加する必要があります。以下は試したいクエリですが、使用方法がわかりませんSQLServerのロールバック機能はまだです。Visityearはvarcharデータ型です。

update myTable
set admitdate=dateadd(yyyy,10,admitdate)
where visitYear='2010'
4

2 に答える 2

2

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
于 2012-05-14T18:50:16.387 に答える
1

あなたがあなたのテーブルでそれをしたいなら:

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

于 2012-05-14T18:48:42.650 に答える