:
SELECT DateDiff(Hour, 0, GetDate() - TimeStamp)
, , :
DateAdd(Hour, -DateDiff(Hour, 0, GetDate() - TimeStamp), GetDate())
, , . , , , , .
SELECT
TimeStamp,
Now = GetDate(),
HourDiff = DateDiff(Hour, 0, GetDate() - TimeStamp),
HourCalc = DateAdd(Hour, -DateDiff(Hour, 0, GetDate() - TimeStamp), GetDate()),
HourDiff2 = DateDiff(Hour, DateAdd(Millisecond, AdjustMs, TimeStamp), DateAdd(Millisecond, AdjustMs, GetDate())),
HourCalc2 = DateAdd(Hour, -DateDiff(Hour, DateAdd(Millisecond, AdjustMs, TimeStamp), DateAdd(Millisecond, AdjustMs, GetDate())), GetDate())
FROM
(
SELECT DateAdd(Second, -3559, GetDate())
UNION ALL SELECT DateAdd(Second, -3600, GetDate())
UNION ALL SELECT DateAdd(Second, -3601, GetDate())
) x (TimeStamp)
CROSS JOIN (
SELECT 3599997 - DateDiff(Millisecond, 0, DateAdd(Hour, -DateDiff(Hour, 0, GetDate()), GetDate()))
) D (AdjustMs)
, datetime datetime (1/300th ), , 3600000 - 3 = 3599997. TimeStamp GetDate(), , , D , AdjustMs.
, , . , , , "19000101 00: 00: 00.000" (0 ).
, 24+ :
SELECT DateAdd(Millisecond, 2147483647, 0) = '1900-01-25 20:31:23.647'