如何更新DateTime字段?

Rag*_*oad 7 sql-server datetime triggers

是否有插入新数据时可用于更改DateTime字段的数据库级功能(触发器或其他内容)?问题在于,我正在整合的服务恰好在GMT中发送所有时间(在这种情况下是在他们的结尾收到一些信息的时间).

我需要自动更改此值以反映数据库服务器所在时区的时间.例如,如果他们在下午2:34发送给我,但我在纽约,我希望它在数据库中输入为9:凌晨34点.这也需要考虑GMT和服务器之间的夏令时差异,这似乎是一场噩梦.有什么建议?

另外,如果有帮助,我正在使用SQL Server 2005.

编辑:

让我澄清一件事.每隔一段时间(5,10,15分钟)批量检索进入此列的日期,因此我认为唯一的方法是在收到时更改时间,而不是添加TimeModified字段或其他内容.这甚至可行吗?

mar*_*c_s 16

你可以创造

  • 一个默认值DateTime,当你插入一个新的记录,其被设置

    CREATE TABLE dbo.YourTable
    ( ........,
      LastModifiedOn DATETIME 
          CONSTRAINT DF_YourTable_LastModifiedOn DEFAULT (GETDATE())
    )
    
    Run Code Online (Sandbox Code Playgroud)
  • 一个AFTER UPDATE TRIGGER,它会DateTime在您更新行时将字段设置为新值

    CREATE TRIGGER trgAfterUpdate
    ON dbo.YourTable
    AFTER UPDATE 
    AS BEGIN
       UPDATE dbo.YourTable
       SET LastModifiedOn = GETDATE()
       FROM INSERTED i
       WHERE i.Table1ID = YourTable.Table1ID
    END
    
    Run Code Online (Sandbox Code Playgroud)

使用默认值和触发器,您的日期时间字段LastModifiedOn应始终是最新的并显示上次修改日期/时间.