在 Firebird 2.1 及更高版本上,您可以使用
select DATEDIFF(second, timestamp '1/1/1970 00:00:00', current_timestamp)
from rdb$database
对于早期版本,您可以使用 FreeAdhocUDF 中的 UDF F_AGEINSECONDS:
select F_AGEINSECONDS('1/1/1970 00:00:00', current_timestamp) from
rdb$database
See 回复:[firebird-support] 如何将 TIMESTAMP 转换为 unix 时间戳(自纪元以来的秒数) http://fb-list-archive.s3-website-eu-west-1.amazonaws.com/firebird-support/2009/6/102699.html
如果您不是 GMT,则需要通过将时区偏移添加到时间戳来考虑您当前的时区。例如,对于 CEST (+2:00),您将需要使用:
select DATEDIFF(second, timestamp '1970-01-01 02:00:00', current_timestamp)
from rdb$database
(注意我在这里切换到 ISO-8601 日期格式)
在 Firebird 4.0 中,您可以通过使用TIMESTAMP WITH TIME ZONE
文字:
select DATEDIFF(second, timestamp '1970-01-01 00:00:00 UTC', current_timestamp)
from rdb$database