SQL Serverデータベースに列EntryDate
があります。SQL Server:NULL値を今日の値に設定します。
クエリに値が指定されていない場合、今日の日付(サーバー時刻)でNULL値を設定するにはどうすればよいですか?
列にSQL Serverデータベースに列EntryDate
があります。SQL Server:NULL値を今日の値に設定します。
クエリに値が指定されていない場合、今日の日付(サーバー時刻)でNULL値を設定するにはどうすればよいですか?
列に許可しないヌルとgetdate()
/*Deal with any existing NULLs*/
UPDATE YourTable SET EntryDate=GETDATE() WHERE EntryDate IS NULL
/*Disallow NULLs*/
ALTER TABLE YourTable ALTER COLUMN EntryDate DATE NOT NULL
/*Add default constraint*/
ALTER TABLE YourTable ADD CONSTRAINT
DF_YourTable_EntryDate DEFAULT GETDATE() FOR EntryDate
Update table
set EntryDate = getdate()
where EntryDate is null
投稿する場合は、テキストエディタでこれらの行を強調表示し、エディタツールバーの[コード]ボタン(101 010)をクリックして、フォーマットや構文を強調表示してください。 –
また、これは正確に自動ではありません、OPはおそらくそれが期待されるように。確かに - それは今日の日付にNULL値を更新する - それは明示的に呼び出される必要があります、それはデータが挿入されたときに自動的に行いません.... –
別の解決策の列にデフォルト設定:あなたのテーブルの名前を変更し、ない同じ名前のビューを作成
をあなたが望むロジックです:
CREATE VIEW TableName
AS
SELECT Column1, Column2, ... ISNULL(EntryDate, GETDATE())
FROM Old_TableName
次に、実際のデータを変更しないでください。bあなたが今日の日付を報告しているそのテーブルのためのヌル値を得るならば。
これにより、EntryDateの値が他の回答と大きく異なるようになります。問題はあいまいなので、どちらが正しいかわからない。ビューを使用すると、NULL EntryDate列が現在の日時に変更されたUPDATE回答とは対照的に、NULL EntryDate列に常に現在の日時値(各実行ごとに異なる)が設定されます。選択します。 –
私はISNULLの代わりにCOALESCEを使用しなければならないという点を除いて、これは適切な解決策だと思います –
@idevlop - それはなぜですか?私は – JNK
これは最適なソリューションです。クエリが明示的にEntryDateフィールドにNULLを提供する場合、クエリはエラーになります。クエリはEntryDateに何も指定しないか、DEFAULT VALUESを指定する必要があります。 –
おそらく、彼が求めているものではない – smirkingman
@smirkingman - あいまいなIMOです。 「値がクエリで提供されなかった場合」をどのように解釈するかによって異なります。私の答えは、INSERT INTO [YourTable](Col1)VALUES( 'X') ' –