SQLSERVER:长整型转为日期时间F_LocalDatetime64

长整型转为日期 , 演示环境:MS  SQL SERVER 2019(RTM) Developer Edition .

CREATE FUNCTION F_LocalDatetime64( @milliSecond bigint)
returns datetime2 
as 
begin
  declare @result datetime2;
  declare @second bigint;
  declare @milli bigint;
  if len(@milliSecond)= 13 
  begin
    -- 以毫秒级的长整型转为 日期
    set @second = cast( @milliSecond/1000 as int );
	select @RESULT = DATEADD(second,@Second,'1970-01-01') 
	set @milli= substring( cast(@milliSecond as nvarchar(20) ),11,3)
	select @result = Dateadd(millisecond, @milli, @result)
  end;
  else if len(@milliSecond)= 10 
    select @RESULT = DATEADD(second,@MilliSecond,'1970-01-01') 
 

  return(@result);
end; 

-- drop  FUNCTION F_LocalDatetime ;
CREATE FUNCTION F_LocalDatetime( @Second bigint)
returns datetime2 
as 
begin
  declare @result datetime2;
  
  select @RESULT = DATEADD(second,@Second  ,'1970-01-01') 
  return(@result);
end; 


select convert( datetime2,17418960003, 121)

-- 1741795200 :,'2025-03-13 20:00:00'
select DATEADD(second,1741795200,'1970-01-01') , DBO.F_LocalDatetime(1741795200) AS DATE_TIME

select  dbo.F_LocalDatetime64(1741795200234) as [datetime2] 
-- 返回: '2025-03-12 16:00:00.2340000'

  

posted @ 2025-03-16 15:27  samrv  阅读(17)  评论(0)    收藏  举报