69

このステートメントを使用する場合

create table demo (
    ts timestamp
)

insert into demo select current_timestamp

次のエラーが表示されます。

タイムスタンプ列に明示的な値を挿入することはできません。列リストで INSERT を使用してタイムスタンプ列を除外するか、DEFAULT をタイムスタンプ列に挿入します

timestamp現在の時刻を列に挿入するにはどうすればよいですか?

4

7 に答える 7

67

MSDNによるとtimestamp

データベース内で自動的に生成された一意の 2 進数を公開するデータ型です。通常、timestamp はテーブル行にバージョン スタンプを付けるメカニズムとして使用されます。ストレージサイズは 8 バイトです。タイムスタンプ データ型は単なる増分であり、日付や時刻は保持されません。日付または時刻を記録するには、datetime データ型を使用します。

datetimeおそらく代わりにデータ型を探しているでしょう。

于 2012-04-21T19:53:03.363 に答える
29

まったく同じタイムスタンプ データをコピーする必要がある場合は、宛先テーブルのデータ型をタイムスタンプからバイナリ (8) に変更します。私は varbinary (8) を使用しましたが、問題なく動作しました。

これは明らかに宛先テーブルのタイムスタンプ機能を壊すので、最初にそれで問題ないことを確認してください。

于 2013-05-03T16:56:05.567 に答える
15

値をタイムスタンプ列に明示的に挿入することはできません。自動生成されます。この列を挿入ステートメントで使用しないでください。詳細については、 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
于 2012-04-21T19:56:46.137 に答える
5

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
于 2013-04-29T10:26:17.140 に答える
-1

テーブルのデモを作成します (id int, ts タイムスタンプ)

demo(id,ts) 値に挿入 (1, DEFAULT)

于 2016-02-26T19:59:40.770 に答える