2016-06-17 30 views
-1

Microsoft SQL Serverにテーブルがあり、現在行が追加されたときにその行が列に追加された日付が追加されるように設定されています名前、日付。私はこれを、この列のデフォルト値としてgetdate()を使って行った。問題は、行に入れられるデータが前日のデータであることです。行の追加時に、現在の日付を列Dateに追加するのではなく、前日の日付を追加するように、デフォルト値を設定する方法はありますか?Microsoft SQL Serverテーブルのデフォルト値を昨日の日付に設定する方法

+2

'GETDATE()'から 'DATEADD(DAY、-1、GETDATE()) 'に変更してください。 – Siyual

+0

はタイムゾーンを正しく処理します。私の推測では、クライアントのタイムゾーンがサーバーのタイムゾーンと異なることです。デフォルトを変更すると、誰かがサーバーやあなたのものではないタイムゾーンから接続した場合、まったく同じ問題が発生します。 – Paolo

答えて

1

だけ交換してください:GETDATE()

をして:DATEADD(DAY, -1, GETDATE())

HereDATEADD機能に関するいくつかの情報を。

0
CREATE TABLE #test (
ID INT, 
myDate DATETIME CONSTRAINT DF_Date DEFAULT DATEADD(DAY, -1, GETDATE()) 
); 

INSERT INTO #test (ID) VALUES (1); 

SELECT * 
FROM #test 

日付のみを追加したい場合は、時間部分なしで、代わりにCAST(DATEADD(DAY, -1, GETDATE()) AS DATE)を使用しています。

関連する問題