Попытка вычислить количество дней с 01.01.1900 и функция DateDiff отключена - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь подсчитать количество дней, прошедших с 1 января 1900 года по 5 января 2019 года.

Я пробовал это, используя несколько дат, и получаю то же самое. Возвращаемое значение составляет 2 выходных.

--
-- calculate the number of days between 1/1/1900 and 5/1/2018
--
SELECT DATEDIFF(DAY,CONVERT(DATE,'1/1/1900'),CONVERT(DATE,'5/1/2018'))

Ожидаемый результат: 43221 Фактический результат: 43219

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 21 мая 2019

DATEDIFF возвращает количество дней между двумя датами.Поэтому, если вы хотите, чтобы номер 1900-01-01 был пронумерован как 1-й день, вы должны добавить 1 к любой разнице, которую вы получите от DATEDIFF.В Excel день 0 - 1899-12-31.

Во-вторых, Excel рассматривает 1900 как високосный год и имеет 29 февраля-1900 (день 60 в системе нумерации Excel iirc).Это было пережитком Lotus 1-2-3, в котором изначально использовался упрощенный алгоритм для високосных годов (каждый год делится на 4 как скачок), и он остается для обратной совместимости

Если объединить эти два сбоя,Эти данные отражают ваши результаты в два раза.

...