📜  在 sql server 中将纪元转换为日期 - SQL (1)

📅  最后修改于: 2023-12-03 15:23:19.430000             🧑  作者: Mango

在 SQL Server 中将纪元转换为日期 - SQL

在 SQL Server 数据库中,日期和时间都是以纪元存储的,即自 1970 年 1 月 1 日以来经过的秒数。在某些情况下,需要将纪元转换为日期格式以便更好地理解。

使用 CONVERT() 函数转换纪元为日期格式

使用 SQL Server 中的 CONVERT() 函数可以将纪元转换为日期格式。以下是将纪元 1615855146 转换为日期的示例:

SELECT CONVERT(datetime, '1970-01-01') + DATEADD(s, 1615855146, 0) AS 'Date'

解释:

  • CONVERT(datetime, '1970-01-01') 将字符串 '1970-01-01' 转换为日期格式。
  • DATEADD(s, 1615855146, 0) 在转换后的日期上添加秒数 1615855146。
  • AS 'Date' 添加别名 'Date'。

该示例返回日期格式为 '03/15/2021 16:12:26.000'。

使用 DATEADD() 函数转换纪元为日期格式

除了使用 CONVERT() 函数,还可以使用 SQL Server 中的 DATEADD() 函数将纪元转换为日期格式。以下是将纪元 1615855146 转换为日期的示例:

SELECT DATEADD(s, 1615855146, '19700101') AS 'Date'

解释:

  • DATEADD(s, 1615855146, '19700101') 在日期 '1970-01-01' 上添加秒数 1615855146。

该示例返回日期格式为 '03/15/2021 16:12:26.000'。

使用 CAST() 函数转换纪元为日期格式

还可以使用 SQL Server 中的 CAST() 函数将纪元转换为日期格式。以下是将纪元 1615855146 转换为日期的示例:

SELECT CAST(CAST('19700101' AS datetime) + 1615855146 / (3600 * 24.0) AS datetime) AS 'Date'

解释:

  • CAST('19700101' AS datetime) 将 '19700101' 转换为日期格式。
  • 1615855146 / (3600 * 24.0) 通过除以 3600 * 24 获取天数。
  • CAST(... AS datetime) 将计算出的天数加上起始日期并转换为日期格式。
  • AS 'Date' 添加别名 'Date'。

该示例返回日期格式为 '03/15/2021 16:12:26.000'。

总结

以上三种方法都可以在 SQL Server 中将纪元转换为日期格式。根据具体需求,可以选择其中一种适合自己的方法使用。