2016-08-23 6 views
0

私はDBに入らず、Microsoft SQL Serverデータベースのテーブルに簡単な挿入クエリを実行しようとすると次のような問題が発生します。Microsoft SQL ServerテーブルのdatetimeフィールドにTimeStamp(現在の日付と現在の時刻)を挿入するにはどうすればよいですか?

したがって、このテーブルには、TIMESTAMPという名前のdatetime列に現在の日付と現在の時刻が含まれている必要があります。 0行( -

16時49分10秒[INSERT:

INSERT INTO TirAliquotaRamoI (DataElaborazione, 
           TassoLordoAnnuoAppl, 
           TassoGiornaliereNetto, 
           Aliquota, 
           DataInizio, 
           DataFine, 
           TIMESTAMP) 
VALUES ('2015-08-01 00:00:00', 
     0, 
     0, 
     1, 
     '2015-08-01 00:00:00', 
     '2100-12-32', 
     TIMESTAMP); 

は、それは私に次のエラーメッセージを与える:私はこの方法でやろうとしていますが、動作することはできません

s)、0.000秒]
エラーコード:207、SQL状態:S0001 無効な列名 'TIMESTAMP'。

なぜですか?私は何が欠けていますか?なにが問題ですか?この問題を解決するにはどうすればよいですか?

+0

タイムスタンプは、呼び出せる関数ではないデータ型です。 GETDATE()はあなたの後です。 –

+1

'TIMESTAMP'は、** nothing **を持つSQL Server型であることに注意してください。 ['rowversion'](https://technet.microsoft.com/en-us/library/ms182776(v = sql.110).aspx)の名前が正しくありませんが、これは時間と無関係に増加する整数ですまたは日付。 'TIMESTAMP'という名前は、あなたのようなユーザーが日付と時刻を関連付ける傾向があるため、多くの混乱を招いています。現時点では、['GETUTCDATE()'](https://msdn.microsoft.com/en-us/library/ms178635.aspx)を使用してください。そして、常にUTCをデータベースに保存してください。 –

+0

@RemusRusanu私は、UTC値を常に保存すべきではないという意見に同意します。それが最良の選択ではない状況がたくさんあります。 –

答えて

5

valuesを使用している列の値はinsertです。したがって、それらのすべては一定でなければなりません。列名は使用できません。したがって、エラーが発生します。

TIMESTAMP列にGETDATE()(タイムスタンプ付きの現在の日付を戻す)を挿入するようにクエリを変更します。

INSERT INTO TirAliquotaRamoI (DataElaborazione, 
          TassoLordoAnnuoAppl, 
          TassoGiornaliereNetto, 
          Aliquota, 
          DataInizio, 
          DataFine, 
          TIMESTAMP) 
VALUES ('2015-08-01 00:00:00', 
    0, 
    0, 
    1, 
    '2015-08-01 00:00:00', 
    '2100-12-32', 
    GETDATE()); 
関連する問題