0

私はしばらくこれを試してきましたが、これまでの研究では、と呼ばれるものを使用する必要があること以外はうまくいきませんでしたDATEPART(これを使用する方法がわかりません)。私の SQL Server は最高ではありません。

私はdeclare @DueDate datetimeカーソル@DueDateを使用して、常に現在の行のDueDate( datetime) 列になります。これはこれまでのところ問題なく完全に機能します。

今私がやろうとしているのは、 から時間を取得し、@DueDateそれが 0 かどうかを確認し、時間が 0 の場合は時間を真夜中に設定し、この変数@DueDateで行の DueDate 列を更新することです。@DueDate

上記のように、カーソルと変数はすべて機能していますが、から時間を取得し、@DueDateその時間の値を確認し、@DueDate 変数を更新してその時間が真夜中になるようにする方法がわかりません。テーブルを更新する方法を知っています。それは簡単な部分です。

前もって感謝します!

4

1 に答える 1

3

これは、カーソルを使用しなくても、まさにあなたが望むことだと思います。

UPDATE [MyTable]
SET DueDate = DATEADD(dd, 1, DueDate) -- add one day (set to midnight)
WHERE DATEPART(hh, DueDate) = 0 -- do this for dates where hour is zero (midnight)

可能な限りカーソルの使用を避ける必要があることに注意してください。SQL の開発には、異なる考え方が必要です。反復について考えるのではなく、アトミックに考えてください。ほとんどのことは 1 つのステートメントで実行できます (1 つのステートメントが非常に複雑な場合は、非常に長くなる可能性があります)。

于 2012-08-30T22:19:35.923 に答える