2016-08-23 160 views
0

我不是那麼喜歡數據庫,我試圖執行一個簡單的插入查詢到Microsoft SQL Server數據庫中的表中的以下問題。如何將TimeStamp(當前日期和當前時間)插入到Microsoft SQL Server表的日期時間字段中?

因此,此表包含名爲TIMESTAMPdatetime列,其中必須包含當前日期和當前時間。

我想用這種方式做,但不能工作:

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); 

它給我以下錯誤信息:

16時49分10秒[INSERT - 0行(秒),0.000秒]
錯誤代碼:207,SQL狀態:S0001 無效的列名稱'TIMESTAMP'。

爲什麼?我錯過了什麼?哪裏不對?我該如何解決這個問題?

+0

timestamp是一種數據類型,不是可以調用的函數。 GETDATE()是你所追求的。 –

+1

請注意,'TIMESTAMP'是一個SQL Server類型,它具有**沒有任何**與時間。只是['rowversion'](https://technet.microsoft.com/en-us/library/ms182776(v = sql.110).aspx)的命名不明確,它是一個與時間無關的不斷增加的整數或日期。 'TIMESTAMP'這個名字引起了很多混淆,因爲像你這樣的用戶往往會把它與日期和時間聯繫起來。當前時間使用['GETUTCDATE()'](https://msdn.microsoft.com/zh-cn/library/ms178635.aspx)。並始終將UTC存儲在數據庫中。 –

+0

@RemusRusanu我不同意你應該總是存儲UTC值。有很多情況下,這不是最好的選擇。 –

回答

5

你是insert ing列值使用values。所以他們都必須是恆定的。它們不能是列名。因此你會得到錯誤。

將查詢更改爲插入GETDATE()(返回帶有時間戳的當前日期)到TIMESTAMP列中。

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()); 
相關問題