Member 12640353 Ответов: 2

Как датировать разницу в миллисекундах


мне нужна разница в дате мельница секунда

выберите функция dateadd(день, функция datediff(День, 0, getdate ()) для - 1, -0.0000001)

2018-07-23 23:59:59.993

но мне нужно как 2018-07-23 23:59:59.999

Что я уже пробовал:

Я уже пробовал как добавил ноль

выберите функция dateadd(день, функция datediff(День, 0, getdate ()) для - 1, -0.00000001)

2018-07-24 00:00:00.000

но я исключил как

2018-07-23 23:59:59.999

2 Ответов

Рейтинг:
2

OriginalGriff

Вы не можете: тип DATETIME в SQL не хранится в миллисекундах, он хранится в виде количества тиков с определенного момента времени, и ТИК обычно составляет 31,250 миллисекунд (но зависит от компьютера): @@TIMETICKS[^]


Рейтинг:
0

Richard Deeming

Предполагая, что SQL 2008 или выше, вам нужно будет использовать новый тип datetime2(7) [^].

SELECT DateAdd(millisecond, -1, Cast(DateAdd(day, -1, Cast(SysDateTime() As date)) As datetime2(7)));
-- Output: 2018-07-23 23:59:59.9990000

Разорвать этот вниз:
DECLARE @Now datetime2(7) = SysDateTime();                                   -- Get the current date and time
DECLARE @Today date = Cast(@Now As date);                                    -- Remove the time part
DECLARE @Yesterday date = DateAdd(day, -1, @Today);                          -- Subtract one day
DECLARE @YesterdayDateTime datetime2(7) = Cast(@Yesterday As datetime2(7));  -- Need a datetime2 to subtract time units
DECLARE @Result datetime2(7) = DateAdd(millisecond, -1, @YesterdayDateTime); -- Subtract one millisecond