当前位置: 代码迷 >> Sql Server >> 全日期格式跟UTC格式之间的互转
  详细解决方案

全日期格式跟UTC格式之间的互转

热度:2   发布时间:2016-04-24 10:17:34.0
全日期格式和UTC格式之间的互转

IF OBJECT_ID('TEMPDB.DBO.#T1') IS NOT NULL DROP TABLE #T1
GO


CREATE TABLE #T1
(
DT Datetime
)

Insert into #T1
values('2014-07-01 10:10:12'),
('2014-07-01 10:20:13'),
('2014-07-01 10:30:14'),
('2014-07-01 10:40:15')


想要实现两种时间格式的互相转换:
1、想将上面这个全日期转换成13位数值的UTC格式。
2、将13位数值的UTC格式转换成全日期格式。
------解决方案--------------------
引用:
好像不是我要的。
我下面这样写不知道是否正确:


create function fn_sceonds
(
    @date1 datetime,
    @date2 datetime
)
returns bigint
as
begin
    return         (convert(bigint, datediff(day, @date1, @date2)) * 24 * 60 * 60*1000)
               -       (datediff(second, dateadd(day, datediff(day, 0, @date1), 0), @date1))
              +       (datediff(second, dateadd(day, datediff(day, 0, @date2), 0), @date2))
end



example:
select    dbo.fn_diffsecond('1970-01-01 00:00:00', '2014-07-23 16:33:59')

----------------------结果--------------------------
1406073659639 

select  datediff (second ,'1970-01-01 00:00:00', '2014-07-23 16:33:59')   这样不是直接可以计算出两个时间段之间的秒差值,为什么你要用day 在转换
------解决方案--------------------
你的这个方法只能使用到2038-1-19 3:14:07,因为DATEDIFF返回的是正数,范围为-2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)

SELECT  DATEDIFF(second ,'1970-01-01 00:00:00', '2038-1-19 3:14:08') 

引用:
select  datediff (second ,'1970-01-01 00:00:00', '2014-07-23 16:33:59')   这样不是直接可以计算出两个时间段之间的秒差值,为什么你要用day 在转换
  相关解决方案