чудесатым типом данных. на физическом уровне это numeric с достаточной точностью. и хранит в себе количество миллисекунд, прошедших с рождества христова по гринвичу.
как лучше привести это чудо к нормальной дате (datetime, datetime2, datetimeoffset)?
в принципе, я конечно решил, но мне капец как не нравится мое решение, нет ли у кого идей как сделать покрасивше?
create or alter function dbo.ПорядокВДатуВремя
(
@Порядок bigint
)
returns datetime
as
begin
declare @Result datetime2
, @r datetime
, @ms int
, @second int
, @day int;
set @Result = '00010101'
set @ms = @Порядок % 1000;
set @Порядок = (@Порядок - @ms) / 1000;
set @second = @Порядок % 86400;
set @day = @Порядок / 86400;
set @Result = dateadd(millisecond, @ms, @Result);
set @Result = dateadd(second, @second, @Result);
set @Result = dateadd(day, @day, @Result);
set @Result = dateadd(hour, 3, @Result);
set @r = @Result
return @r;
end;
А так пробовал? dateadd(ms,xxx,'000000 00:00:00)
конечно! dateadd на вход хочет int
Обсуждают сегодня