Sql server 有没有办法将我的默认值设置为自1970年以来的秒数?
在我的表格中,我将当前日期/时间设置为:Sql server 有没有办法将我的默认值设置为自1970年以来的秒数?,sql-server,Sql Server,在我的表格中,我将当前日期/时间设置为: [ModifiedDate] DATETIME DEFAULT (getdate()) NOT NULL, 但是有没有一种方法可以把它设置为1970年以来的秒数呢。Unix历元(或Unix时间或POSIX时间或Unix时间戳)是自1970年1月1日以来经过的秒数 我意识到我需要将此字段设置为整数,但我不确定如何设置默认值 虽然我确实建议最好存储datetime2值,甚至datetime,但您可以简单地使用Alex K的建议: DEC
[ModifiedDate] DATETIME DEFAULT (getdate()) NOT NULL,
但是有没有一种方法可以把它设置为1970年以来的秒数呢。Unix历元(或Unix时间或POSIX时间或Unix时间戳)是自1970年1月1日以来经过的秒数
我意识到我需要将此字段设置为整数,但我不确定如何设置默认值 虽然我确实建议最好存储
datetime2
值,甚至datetime
,但您可以简单地使用Alex K的建议:
DECLARE @T AS TABLE
(
UnixTime int DEFAULT(DATEDIFF(SECOND, '1970-01-01 00:00', GETDATE())),
CreateDate datetime DEFAULT(GETDATE())
)
测试:
结果:
UnixTime CreateDate
----------- -----------------------
1468930170 2016-07-19 12:09:30.380
另一种选择,如不信者Damien_所建议的,是使用计算列:
DECLARE @T AS TABLE
(
CreateDate datetime DEFAULT(GETDATE()),
UnixTime as DATEDIFF(SECOND, '1970-01-01 00:00',CreateDate)
)
虽然我确实建议最好存储
datetime2
值,甚至datetime
,但您可以简单地使用Alex K的建议:
DECLARE @T AS TABLE
(
UnixTime int DEFAULT(DATEDIFF(SECOND, '1970-01-01 00:00', GETDATE())),
CreateDate datetime DEFAULT(GETDATE())
)
测试:
结果:
UnixTime CreateDate
----------- -----------------------
1468930170 2016-07-19 12:09:30.380
另一种选择,如不信者Damien_所建议的,是使用计算列:
DECLARE @T AS TABLE
(
CreateDate datetime DEFAULT(GETDATE()),
UnixTime as DATEDIFF(SECOND, '1970-01-01 00:00',CreateDate)
)
问DATEDIFF()和01-01-1970?什么是“自1970年以来的秒数”?如果你指的是unix时间,那么就说unix时间。如果你没有,解释一下你到底需要什么。例如,应如何处理DST、闰秒等?为什么要存储整数,而不是存储
datetime
并将其转换为应用程序中所需的任何表示形式?但我如何在默认值中包含DATEDIFF?询问01-01-1970中的DATEDIFF()“自1970年以来的秒数”是什么意思?如果你指的是unix时间,那么就说unix时间。如果你没有,解释一下你到底需要什么。例如,应如何处理DST、闰秒等?为什么要存储整数,而不是存储datetime
并将其转换为应用程序中所需的任何表示形式?但如何在默认值中包含DATEDIFF?如果它仅用于从(然后它总是与CreateDate
一致)@Damien\u不相信我的人我同意。在我的回答中添加了这一点。谢谢。如果它只用于读取(然后它总是与CreateDate
一致),我可能会将UnixTime
作为计算列@Damien_不信者我同意。在我的回答中添加了这一点。谢谢。