2017-04-04 8 views
0

私はtable1table2を持っており、テーブル1 + 2の行に基づいてtable3にデータを挿入しています。データが挿入されたときにテーブル3への証拠を得る必要があります。SQLサーバーにタイムスタンプを挿入

表1

Column1 
a 
b 
d 
e 
g 
h 
i 

表2

Column1 
a 
b 
c 
d 
e 
f 

コード:

INSERT INTO [dbo].[table3](column1) 
    SELECT column1 
    FROM [dbo].[table2] 
    WHERE NOT EXISTS (SELECT 
         FROM [dbo].[table1] 
         WHERE column1 = column1); 

結果:

表3

Column1 Column2 
c 
f 

私はテーブルの存在とカラム(varchar(50)またはtimestampを)存在することで私のテーブルへの挿入値は私の現在のスクリプトを使用していた時間が表示されます、時間のいずれかの形式を取得する必要があります。

例:

表3

Column1 Column2 
c  4/4/2017 
f  4/4/2017 

数日後、テーブルは次のようになります。

表3

Column1 Column2 
c  4/4/2017 
f  4/4/2017 
x  5/4/2017 
y  6/4/2017 
z  10/4/2019 

感謝ALTER TABLE TABLE3 ADD COLUMN updated Datetime2 DEFAULT GETDATE()

によって

INSERT INTO table3 (Column2) 
VALUES (CURRENT_TIMESTAMP); 
+3

のようなテーブルのためのいくつかの監査列を追加します。それは恐ろしい考えです。この種の情報の日時データ型があります。 TIMESTAMPを忘れると、それは時間や日付とは関係がありません。現在の質問では、デフォルトのgetdate()を使用してdatetime列にnot null制約を追加するか、またはinsert文で現在の時刻にgetdate()を指定することができます。 –

答えて

3

表3にジャストADD 1つの以上の列そして、ちょうどあなたが新しい行を挿入するたびに、あなたが何をしたかのように挿入を行いますよう

何か:用のために私のスクリプトをアップグレードテーブル3には、最後のフィールドupdatedに現在の日付と時刻が入力されます。

0

はEVER varchar列に日時情報を格納しない


以下
[StatusCode] [varchar](1) NOT NULL, 
[CreatedDate] [datetime] NOT NULL CONSTRAINT [DF_ConstraintName_CreatedDate] DEFAULT (getdate()), 
[LastModifiedByUserId] [int] NULL , 
[LastModifiedDate] [datetime] NULL, 
関連する問題