可以使用cast(时间字段 as datetime)实现;
转换存储过程如下:
create proc sp_millisec_2_datetime
@millisec_all bigint,
@base_time datetime2,
@output_datetime datetime2 output
as
declare @millisec_part as bigint
declare @days as bigint
begin
set @days = ROUND(@millisec_all/86400000,0)
set @millisec_part = @millisec_all%86400000
set @output_datetime = (SELECT DATEADD(MILLISECOND,@millisec_part,DATEADD(DAY,@days,@base_time)))
end
调用例,@millisec_all是毫秒数,@base_time 是转换成毫秒数的起算基本日期;
declare @output_datetime as datetime2
declare @millisec_all as bigint
declare @base_time as datetime2
set @millisec_all = 86400000001
set @base_time = '0001-01-01 00:00:00'
exec db_tms_base.dbo.sp_millisec_2_datetime @millisec_all,@base_time,@output_datetime out
select @output_datetime
取消
评论