3

私はMyDatabase.MyTable.DateColdatetimeで埋めたい数千行を持っています。各日付を前の日付よりも 1 秒大きくしたい。どうやってやるの?

4

2 に答える 2

0

注文基準はよくわかりませんが、次を使用できます。

MIN(DateCol) OVER()

最初の日付を取得するには、および

ROW_NUMBER() OVER(ORDER BY DateCol, ID)

追加する秒数を取得するには (順序基準は異なる場合があります)。次に、2 つを組み合わせて、共通テーブル式を更新します。

WITH CTE AS
(   SELECT  ID,
            DateCol,
            NewDate = DATEADD(SECOND, 
                                MIN(DateCol) OVER(), 
                                ROW_NUMBER() OVER(ORDER BY DateCol, ID))
    FROM    MyDatabase.MyTable
)
UPDATE  CTE
SET     DateCol = NewDate;

列に日付がない場合は、開始日を入力するだけです (GETDATE()以下)。

WITH CTE AS
(   SELECT  ID,
            DateCol,
            NewDate = DATEADD(SECOND, 
                                GETDATE(), 
                                ROW_NUMBER() OVER(ORDER BY DateCol, ID))
    FROM    MyDatabase.MyTable
)
UPDATE  CTE
SET     DateCol = NewDate;
于 2013-11-06T20:37:36.137 に答える