如何将TimeStamp(当前日期和当前时间)插入到Microsoft SQL Server表的日期时间字段中?

问题描述:

我不是那么喜欢数据库,我试图执行一个简单的插入查询到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值。有很多情况下,这不是最好的选择。 –

你是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());