web-dev-qa-db-ja.com

DateTimeデータベースフィールドを「Now」に設定します

VB.netコードでは、SQLパラメーターを使用して要求を作成します。 DateTimeパラメーターを値DateTime.Nowに設定すると、リクエストはどのようになりますか?

UPDATE table SET date = "2010/12/20 10:25:00";

または

UPDATE table SET date = GETDATE();

最初のケースでは、すべてのレコードがまったく同じ時刻に設定されると確信しています。 2番目のケースでは、DBMSがリクエストを処理する方法に依存します。次の2番目の質問につながります。SQLServerは、NOW()を使用して大きなテーブルを更新するときに同じ日付と時刻を設定しますか?

EDIT: NOW()(SQL Serverには存在しない)をGETDATE()に置き換えました。

83
Thibault Witzig

SQLでは、GETDATE()を使用する必要があります。

UPDATE table SET date = GETDATE();

NOW()関数はありません。


質問に答えるには:

大きなテーブルでは、関数が各行に対して評価されるため、更新されたフィールドに対して異なる値を取得することになります。

したがって、すべての日付を同じ日付に設定することが要件である場合、次のような(テストされていない)ことを行います。

DECLARE @currDate DATETIME;
SET @currDate = GETDATE();

UPDATE table SET date = @currDate;
154
Oded

GETDATE()の代替はCURRENT_TIMESTAMPです。まったく同じことを行います。

19
Don Simon

GETDATE() を使用します

現在のデータベースシステムのタイムスタンプを、データベースのタイムゾーンオフセットなしの日時値として返します。この値は、SQL Serverのインスタンスが実行されているコンピューターのオペレーティングシステムから取得されます。

UPDATE table SET date = GETDATE()
7
Adriaan Stander