-3

SQLServer2008R2 を使用しています。という列がありますRunningDate

私が望むのは、今日 の値を設定すると、明日はRunningDateとして2013-08-13 00:00:00.000自動的に更新されるということ2013-08-14 00:00:00.000です。

関数については知っていDATEADDますが、上記のシナリオでどのように使用しますか?

どんな助けでも大歓迎です。ありがとう。

4

3 に答える 3

1

次の 2 つのオプションがあります。

オプション A

テーブルから RunningDate 列を除外し、代わりにビューを作成します。RunningDate 列を としてビューに追加しますCAST(CAST(GETDATE() AS DATE) AS DATETIME)

オプション B

テーブルを定期的に深夜に更新する SQL Server エージェント ジョブを作成します。ステートメントが正確に 00:00:00.000 で実行されることを確認できないため、日付の時刻部分を削除することを忘れないでください (たとえば、オプション A のキャストを使用)。

于 2013-08-13T11:34:58.507 に答える
0

フィールドが 1 つしかない場合は、データベースに追加しないことをお勧めします。ストアドプロシージャで使用する場合は、使用します

SELECT GETDATE()

また

SELECT DATEADD(day, DATEDIFF(day, '19000101', GETDATE()), '19000101');

一致するかDateTime.Now、コード内で - .NET の場合。1 つのエントリをテーブルに格納するだけで、多くのオーバーヘッドが追加されます。

于 2013-08-13T11:38:29.760 に答える
0

これを試してみてください -

DECLARE @temp TABLE
(
      ID INT PRIMARY KEY
    , RunningDate DATETIME
)

INSERT INTO @temp (ID)
VALUES (1),(2),(3),(5),(8)

UPDATE tt
SET RunningDate = CAST(DATEADD(dd, t.rn, GETDATE()) AS DATE)
FROM @temp tt
JOIN (
    SELECT 
          ID
        , rn = ROW_NUMBER() OVER (ORDER BY 1/0) - 1
    FROM @temp
) t ON t.ID = tt.ID

SELECT * 
FROM @temp

出力 -

ID          RunningDate
----------- -----------------------
1           2013-08-13 00:00:00.000
2           2013-08-14 00:00:00.000
3           2013-08-15 00:00:00.000
5           2013-08-16 00:00:00.000
8           2013-08-17 00:00:00.000
于 2013-08-13T11:36:23.743 に答える