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


93

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

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

または

UPDATE table SET date = GETDATE();

最初のケースでは、すべてのレコードがまったく同じ時刻に設定されると確信しています。2番目のケースでは、DBMSが要求を処理する方法によって異なります。どちらが私に2番目の質問を導きます:SQL ServerはNOW()で大きなテーブルを更新するときに同じ日付と時刻を設定しますか?

編集: NOW()(SQL Serverには存在しません)をGETDATE()に置き換えました。

回答:


172

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

UPDATE table SET date = GETDATE();

NOW()機能はありません。


あなたの質問に答えるには:

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

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

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

UPDATE table SET date = @currDate;

エラーNOW()はMysqlです。しかし、問題は残っています。
Thibault Witzig 2010

わかりました。したがって、GETDATE()ではなく実際の日付を(コードから)要求に入れる必要があります。SQLparameterをDateTime.Nowに設定すると、これが実行されますか、または日付を文字列に変換してから、リクエストに追加しますか?
Thibault Witzig 2010

@@ Thibault Witzig-できます。または、私が投稿したSQLを使用することもできます(現在の日付を変数に取得し、変数を使用してテーブルに日付を設定します-変数の値は変更されません)。
2010

すべてのレコードで同じ時間を維持したい場合は、パラメーター化されたSQLを使用してパラメーターとしてNowを渡します。これにより、文字列の解析やローカライズされたデータ文字列のフォーマットの問題を心配する必要がなくなります。
ジムウーリー2013

20

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


7
CURRENT_TIMESTAMP実際のSQL標準なので、これが推奨される構文であると主張する人もいます。
トニーL.

これはかなり間違っています。私はそれら2つのドキュメントを読んだだけですが、それらは「まったく同じもの」ではないことは明らかです。この質問は、これについてより詳細な説明を提供します。stackoverflow.com
Mladen B.

7

GETDATE()を使用します

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

UPDATE table SET date = GETDATE()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.