【问题标题】:Convert epoch timestamp to datetime without milliseconds?在没有毫秒的情况下将纪元时间戳转换为日期时间?
【发布时间】:2021-04-01 22:26:26
【问题描述】:

首先我知道有几个与此类似的问题,但它们都没有真正说明如何在不包括毫秒的情况下显示日期时间格式。

我有以下代码:

SELECT CONVERT(
   DATETIME,
   dateadd(SS,CONVERT(INT, 1354320000), CAST('1970-01-01 00:00:00' as datetime)),
   120
)

但是,代码包含毫秒,但我需要格式类似于 yyyy-mm-dd hh:mm:ss

有没有人知道解决这个问题的有效方法?

【问题讨论】:

  • 使用datetime2(0) 代替datetime 也是一种选择。
  • 啊宾果游戏!,不知道我怎么没想到这些。谢谢大家

标签: sql-server datetime epoch


【解决方案1】:

您可以尝试使用适当的数据类型。正如documentation 中所述,DATEADD() 的返回值数据类型是动态的,它取决于为date 参数提供的参数。

SELECT DATEADD(
   second, 
   CONVERT(int, 1354320201), 
   CAST('1970-01-01T00:00:00' AS datetime2(0))
)

结果:

2012-12-01 00:03:21

【讨论】:

    【解决方案2】:

    试试小日期时间

    SELECT CAST(DATEADD(SS,CONVERT(INT, 1354320000), CAST('1970-01-01 00:00:00' AS DATETIME))AS SMALLDATETIME)
    

    另外,通过使用 FORMAT

    SELECT FORMAT(DATEADD(SS,CONVERT(INT, 1354320000), CAST('1970-01-01 00:00:00' AS DATETIME)),'yyyy-MM-dd HH:mm:ss')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-14
      • 2012-03-08
      • 2018-08-03
      • 2013-08-19
      • 2023-03-27
      • 2020-12-04
      • 2013-01-08
      • 2020-09-14
      相关资源
      最近更新 更多