是否有数据库级函数(触发器或其他函数)可用于在插入新数据时更改日期时间字段?问题是,我正在集成的服务碰巧以 GMT 发送其所有时间(在本例中是在其端收到一些信息的时间)。
我需要自动更改此设置以反射(reflect)数据库服务器所在时区的时间。例如,如果他们向我发送下午 2:34,但我在纽约,我希望将其输入到数据库中上午 9:34。这还必须考虑格林尼治标准时间和服务器所在位置之间夏令时的差异,这似乎是一场噩梦。有什么建议吗?
此外,如果有帮助的话,我正在使用 SQL Server 2005。
编辑:
让我澄清一件事。进入此列的日期每隔一段时间(5、10、15 分钟)分批检索,因此我认为唯一的方法是在收到时间后更改时间,而不是添加 TimeModified 字段或其他内容。这可行吗?
最佳答案
你可以创建
插入新记录时设置的
DateTime
默认值CREATE TABLE dbo.YourTable ( ........, LastModifiedOn DATETIME CONSTRAINT DF_YourTable_LastModifiedOn DEFAULT (GETDATE()) )
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
使用默认值和触发器,您的日期时间字段 LastModifiedOn
应始终保持最新状态并显示上次修改日期/时间。
马克
关于sql-server - 如何在更新时更改日期时间字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1882200/