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_不信者我同意。在我的回答中添加了这一点。谢谢。