このステートメントを使用する場合
create table demo (
ts timestamp
)
insert into demo select current_timestamp
次のエラーが表示されます。
タイムスタンプ列に明示的な値を挿入することはできません。列リストで INSERT を使用してタイムスタンプ列を除外するか、DEFAULT をタイムスタンプ列に挿入します
timestamp
現在の時刻を列に挿入するにはどうすればよいですか?
このステートメントを使用する場合
create table demo (
ts timestamp
)
insert into demo select current_timestamp
次のエラーが表示されます。
タイムスタンプ列に明示的な値を挿入することはできません。列リストで INSERT を使用してタイムスタンプ列を除外するか、DEFAULT をタイムスタンプ列に挿入します
timestamp
現在の時刻を列に挿入するにはどうすればよいですか?
MSDNによると、timestamp
データベース内で自動的に生成された一意の 2 進数を公開するデータ型です。通常、timestamp はテーブル行にバージョン スタンプを付けるメカニズムとして使用されます。ストレージサイズは 8 バイトです。タイムスタンプ データ型は単なる増分であり、日付や時刻は保持されません。日付または時刻を記録するには、datetime データ型を使用します。
datetime
おそらく代わりにデータ型を探しているでしょう。
まったく同じタイムスタンプ データをコピーする必要がある場合は、宛先テーブルのデータ型をタイムスタンプからバイナリ (8) に変更します。私は varbinary (8) を使用しましたが、問題なく動作しました。
これは明らかに宛先テーブルのタイムスタンプ機能を壊すので、最初にそれで問題ないことを確認してください。
値をタイムスタンプ列に明示的に挿入することはできません。自動生成されます。この列を挿入ステートメントで使用しないでください。詳細については、 http://msdn.microsoft.com/en-us/library/ms182776 (SQL.90).aspx を参照してください。
次のように、タイムスタンプの代わりに日時を使用できます。
create table demo (
ts datetime
)
insert into demo select current_timestamp
select ts from demo
戻り値:
2014-04-04 09:20:01.153
Table1 と Table2 に 3 つの列 A、B、および TimeStamp があるとします。Table1 から Table2 に挿入したい。
これはタイムスタンプ エラーで失敗します。
Insert Into Table2
Select Table1.A, Table1.B, Table1.TimeStamp From Table1
これは機能します:
Insert Into Table2
Select Table1.A, Table1.B, null From Table1
テーブルのデモを作成します (id int, ts タイムスタンプ)
demo(id,ts) 値に挿入 (1, DEFAULT)