Convert seconds to datetime in SQL Server

后端 未结 3 443
悲&欢浪女
悲&欢浪女 2021-01-18 11:32

How to convert seconds to datetime? I try this, but results are not correct:

CONVERT(datetime, DATEADD(ms, dateTimeInSeconds, 0))
相关标签:
3条回答
  • 2021-01-18 11:43

    Informative time span string:

    declare @seconds int = 93825
    
    convert(varchar,(@seconds/86400)) + 'd:' + format(dateadd(ss,@seconds,0),'HH\h:mm\m:ss\s')
    

    Result: 1d:02h:03m:45s

    0 讨论(0)
  • 2021-01-18 11:45

    Given your example, try this:

    select DATEADD(s, dateTimeInMilliseconds, '19700101')
    
    0 讨论(0)
  • 2021-01-18 11:55

    When you use the value zero for date, this is converted to 1900-01-01. Use the specific date that you have selected as epoch:

    convert(datetime, dateadd(ms, dateTimeInMilliseconds, '2010-01-01'))
    

    Note that the datetime data type doesn't have millisecond precision, the resolution is 1/300 second. If you for example have four milliseconds and convert it, you get 2010-01-01 00:00:00.003 rather than 2010-01-01 00:00:00.004. If you need to preserve the millisecond resolution, you need to use the datetime2 data type:

    convert(datetime2, dateadd(ms, dateTimeInMilliseconds, cast('2010-01-01' as datetime2)))
    

    Edit:

    To use seconds instead of milliseconds, use s instead of ms in the dateadd call:

    convert(datetime, dateadd(ms, dateTimeInSeconds, '1970-01-01'))
    
    0 讨论(0)
提交回复
热议问题