Гид по технологиям

DATEDIF в Google Sheets — как правильно считать разницу между датами

8 min read Google Таблицы Обновлено 21 Dec 2025
DATEDIF в Google Sheets — разница между датами
DATEDIF в Google Sheets — разница между датами

Логотип Google Sheets на фоне

О чём эта статья

Эта статья объясняет как работает DATEDIF в Google Sheets, какие единицы измерения она поддерживает, на какие подводные камни обратить внимание и какие альтернативные подходы использовать в сложных случаях. Включены простые и практические примеры, шаблоны формул, проверочные сценарии и чек‑лист для быстрого внедрения.

Что такое DATEDIF

DATEDIF — это функция Google Sheets, предназначенная для вычисления разницы между двумя датами. Она принимает начальную и конечную дату и возвращает числовую разницу в выбранной единице: годах, месяцах или днях. DATEDIF полезна когда нужно получить «полные» годы/месяцы между датами или выполнить гибкие подсчёты (например, дни после вычета полных лет и месяцев).

Определение в одной строке: DATEDIF(date1, date2, unit) — возвращает разницу между date1 и date2 в единице unit.

Синтаксис функции

=DATEDIF(date1, date2, unit)
  • date1 — начальная дата (меньшая дата).
  • date2 — конечная дата (большая дата).
  • unit — текстовая строка, задающая единицу результата.

Важно: оба аргумента должны быть значения́ми даты (тип Date), а не текстовыми строками, иначе результат будет ошибочным или #VALUE!.

Поддерживаемые единицы и что они означают

ОбозначениеЧто возвращает
YКоличество полных лет между датами
MКоличество полных месяцев между датами
DКоличество дней между датами
MDРазница в днях при вычитании полных лет и полных месяцев
YMКоличество полных месяцев после вычитания полных лет
YDКоличество дней между датами, если считать даты в пределах одного года

Объяснение единиц DATEDIF на схеме

Пример объяснения: если date1 = 07.02.2001, date2 = 31.01.2022:

  • Y => 20 (полных лет)
  • M => 251 (полных месяцев)
  • D => 7663 (дней)
  • MD => 24 (разница в днях после вычета полных лет и месяцев: 7 и 31)
  • YM => 11 (месяцев после вычета полных лет)
  • YD => 358 (дней, если считать даты как «в одном году»)

Пошаговые примеры использования

Ниже приведены практические примеры, которые можно вставить в таблицу и протестировать.

Пример 1. Сколько дней и месяцев длился полёт Mars 2020

У нас есть две ячейки с датами:

  • B2 = 30.07.2020 (взлёт)
  • B3 = 18.02.2021 (посадка)

Перед вычислением убедитесь, что ячейки действительно имеют формат даты: выберите ячейки → Формат → Число → Дата.

Формула для дней:

=DATEDIF(B2, B3, "D")

Формула для месяцев:

=DATEDIF(B2, B3, "M")

В примере это возвращает 569 дней и 18 месяцев соответственно.

Форматирование ячеек как дата в Google Таблицах

Пример 2. Сколько дней прошли с последнего дня рождения и сколько осталось до следующего

Имеем:

  • B1 = дата рождения John Doe (например, 07.02.1990)
  • B2 = =TODAY() — текущая дата

Формула, показывающая сколько дней прошло с последнего дня рождения:

=DATEDIF(B1, B2, "YD")

Пояснение: “YD” игнорирует полные годы, поэтому возвращает разницу в днях между датой рождения и сегодняшней датой в пределах одного года (то есть сколько дней прошло с последнего дня рождения).

Чтобы получить сколько дней осталось до следующего дня рождения:

=IF(DATEDIF(B1, B2, "YD")=0, 0, 365 - DATEDIF(B1, B2, "YD"))

Важно учесть високосные годы. Если нужна точность с учётом 29 февраля, лучше использовать следующий подход:

=DATE(YEAR(B2) + (DATE(YEAR(B2), MONTH(B1), DAY(B1)) < B2), MONTH(B1), DAY(B1)) - B2

Эта формула вычисляет ближайшую будущую дату дня рождения и вычитает из неё сегодня, корректно обрабатывая переход через 29 февраля.

Использование TODAY в Google Таблицах

Альтернативы DATEDIF и когда их использовать

DATEDIF удобна, но не единственный инструмент. Рассмотрите альтернативы:

  • DAYS(end, start) — возвращает количество дней между датами; проще и напрямую возвращает число дней.
  • DAYS360(start, end, method) — корректирует расчёт на основе 360‑дневного финансового года; полезно в бухгалтерских вычислениях.
  • YEARFRAC(start, end, basis) — возвращает дробное число лет между датами; удобно для вычисления возрастов с десятичной точностью или для финансовых расчётов.
  • Формулы с DATE, YEAR, MONTH, DAY — дают максимальную гибкость при формировании «следующих дат», вычислении сроков и учете високосных годов.

Когда не использовать DATEDIF:

  • Если нужны дробные года — используйте YEARFRAC.
  • Для финансовых расчётов по 30/360 используйте DAYS360.
  • Если требуется учёт часов/минут — используйте значения с датой/временем и функции типа TIMESTAMPDIFF (в приложениях) или вычитание дат/времён напрямую.

Типичные ошибки и как их исправить

  • Ошибка #VALUE! — скорее всего аргументы не в формате даты. Решение: преобразовать в дату через DATEVALUE или привести формат ячеек.
  • Неверный знак результата — в DATEDIF важно, что первая дата должна быть меньше второй. Иначе будет ошибка. Если порядок может меняться, оборачивайте в MIN/MAX или используйте условие:
=IF(A1<=A2, DATEDIF(A1, A2, "D"), DATEDIF(A2, A1, "D"))
  • Несоответствие ожиданию для “MD” и “YD” — эти единицы специально игнорируют целые годы или месяцы и могут выглядеть «странно». Всегда проверяйте результаты на граничных датах (высокосный год, разные дни месяце).

Обработка високосных годов и 29 февраля

DATEDIF корректно учитывает календарные даты при подсчётах дней и месяцев. Но при использовании формул типа 365 - X результат будет неточен для интервалов, если в промежутке есть 29 февраля. Чтобы корректно учесть високосный год при подсчёте дней до следующего дня рождения, используйте метод с вычислением ближайшей даты рождения (пример выше) или сравнение дат через функцию DATE и YEAR.

Шаблоны и «чек‑лист» для развертывания формул в таблице

Чек‑лист перед массовым применением DATEDIF:

  1. Убедиться, что все входные значения — тип Date.
  2. Проверить порядок дат (start <= end) или добавить защиту через IF.
  3. Выбрать единицу (Y, M, D, MD, YM, YD) согласно бизнес‑правилам.
  4. Протестировать формулы на крайних датах: 28/29 февраля, 31 января, переходы между годами.
  5. Документировать формат выходных значений (целые числа) и обработать исключения (пустые ячейки).

Шаблон «готовой» ячейки для подсчёта возраста в полных годах:

=IF(OR(ISBLANK(B1), ISBLANK(B2)), "", DATEDIF(B1, B2, "Y"))

Шаблон для количества месяцев с округлением вниз:

=IF(OR(ISBLANK(B1), ISBLANK(B2)), "", DATEDIF(B1, B2, "M"))

Критерии приёмки

  • Формула корректно возвращает значения для выборки контрольных дат.
  • Обработаны пустые и неверные типы входных данных без фатальных ошибок.
  • Результат соответствует ожиданиям на граничных датах (високосный год, разные длины месяцев).

Модель принятия решения для выбора метода вычисления (Mermaid)

flowchart TD
  A[Нужно сравнить даты?] --> B{Требуется дробный год?}
  B -- Да --> C[Использовать YEARFRAC]
  B -- Нет --> D{Нужны полные месяцы или годы?}
  D -- Месяцы/Годы --> E[Использовать DATEDIF]
  D -- Дни --> F[Использовать DAYS или DATEDIF с 'D']
  E --> G{Учёт финансовых правил?}
  G -- Да --> H[Использовать DAYS360]
  G -- Нет --> I[DATEDIF подойдёт]

Когда DATEDIF даёт неожиданные результаты

  • MD и YM иногда выглядят неконсистентно: они рассчитывают остаток после вычета полных лет или месяцев. Это не «остаточные дни в общем смысле», а именно арифметический остаток по календарю.
  • Если даты хранятся как текст (например, “2020-07-30” как текст), DATEDIF вернёт ошибку. Используйте DATEVALUE или преобразуйте формат.
  • DATEDIF в локализованных версиях Google Sheets ведёт себя как в англоязычной документации, но названия функций в UI могут быть локализованы. Всегда проверяйте локальную справку, если работаете в иной языковой версии интерфейса.

Мини‑методология тестирования формул

  1. Создайте таблицу с контрольными парами дат: одна для обычных случаев, одна для високосного промежутка, одна для смены длины месяца (31 → 30) и одна с обратным порядком дат.
  2. Примените формулы DATEDIF, DAYS, YEARFRAC.
  3. Сравните результаты с ручными расчётами или эталоном (например, официальными календарями).
  4. Примите решение о добавлении проверки порядка дат и обработке пустых ячеек.

Быстрая шпаргалка по формулам

  • Разница в днях: =DATEDIF(A1, B1, “D”) или =DAYS(B1, A1)
  • Разница в полных месяцах: =DATEDIF(A1, B1, “M”)
  • Разница в полных годах: =DATEDIF(A1, B1, “Y”)
  • Дней после вычета лет и месяцев: =DATEDIF(A1, B1, “MD”)
  • Месяцы после вычета лет: =DATEDIF(A1, B1, “YM”)
  • Дни внутри года: =DATEDIF(A1, B1, “YD”)

Примеры тестов и приёмочные критерии

Тест 1: A1=28.02.2019, B1=01.03.2020 Ожидается: DATEDIF(A1, B1, “Y”) = 1; DATEDIF(A1, B1, “D”) = 367 (с учётом високосного года)

Тест 2: A1=29.02.2016, B1=28.02.2017 Ожидается: DATEDIF(A1, B1, “Y”) = 0; корректное поведение при использовании вычисления следующего дня рождения.

Тест 3: A1 и B1 в обратном порядке Ожидается: добавление IF или ABS для корректного результата или обработка ошибки.

Риски и рекомендации

  • Риск ошибки из‑за строковых дат. Рекомендуется обеспечить валидацию входных данных и унифицировать формат хранения дат (тип Date).
  • Риск неконсистентного восприятия единиц MD/YM/YD другими пользователями. Добавьте поясняющие комментарии в шапку таблицы.

Короткая шпаргалка для команд и ролей

  • Аналитик: использовать DATEDIF для отчётов с требованием «полных» лет/месяцев.
  • Бухгалтер: проверять требования 30/360 и использовать DAYS360 там, где это принято.
  • Продукт‑менеджер: при отображении пользователю добавлять пояснение формата (например, “18 месяцев” vs “1,5 года”).

Краткое резюме

DATEDIF — лёгкий и быстрый инструмент для большинства задач по сравнению дат в Google Sheets. Он даёт целые годы, месяцы и дни, а также остатки после вычета лет или месяцев. Для специфичных нужд (дробные годы, финансовые расчёты, высокоточные обороты вокруг 29 февраля) используйте YEARFRAC, DAYS360 или ручные вычисления через DATE, YEAR, MONTH и DAY.

Пример таблицы в Google Таблицах с расчетами DATEDIF

Важно: перед массовым внедрением проверяйте поведение формул на граничных датах и документируйте возможные исключения.

Словарь в одну строку

  • DATEDIF — функция для вычисления разницы между двумя датами в Google Sheets.
  • YEARFRAC — функция для получения дробного количества лет между датами.
  • DAYS360 — функция для расчёта по финансовой модели 30/360.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Определить модель AirPods по номеру
Гаджеты

Определить модель AirPods по номеру

Как выбрать удалённый хост для Minecraft
Minecraft хостинг

Как выбрать удалённый хост для Minecraft

AirPlay на Roku: как включить и использовать
Руководство

AirPlay на Roku: как включить и использовать

Умный гараж: что установить в первую очередь
Умный дом

Умный гараж: что установить в первую очередь

Запуск Android на Mac
Технологии

Запуск Android на Mac

Android Studio на Mac: установка и запуск
Мобильная разработка

Android Studio на Mac: установка и запуск