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

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

8 min read Google Sheets Обновлено 21 Apr 2026
DATEDIF в Google Sheets: считать разницу между датами
DATEDIF в Google Sheets: считать разницу между датами

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

Что делает функция DATEDIF в Google Sheets

DATEDIF вычисляет разницу между двумя датами и возвращает результат в указанной единице: годах, месяцах или днях. Это удобный инструмент, когда вам нужно быстро узнать возраст, срок проекта или длительность между двумя событиями.

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

Синтаксис:

=DATEDIF(start_date, end_date, "unit")

Важно: DATEDIF предполагает, что start_date <= end_date. Если начальная дата позже конечной — функция выдаст ошибку.

Поддерживаемые unit (единицы):

UnitЧто возвращает
YКоличество целых лет между датами.
MКоличество целых месяцев между датами.
DКоличество дней между датами.
MDКоличество дней между датами после вычитания целых лет и месяцев.
YMКоличество целых месяцев между датами после вычитания целых лет.
YDКоличество дней между датами при условии, что даты считаются в пределах одного года (игнорируется разница в годах).

Пояснение единиц DATEDIF.

Пример для понимания: у студента день рождения 7 февраля 2001 года. Какой возраст у него на 31 января 2022 года?

  • Y → 20 (целых лет).
  • M → 251 (целых месяцев).
  • D → 7663 (дней между датами).
  • MD → 24 (разница по дням после вычитания целых лет и месяцев; 31 − 7 = 24).
  • YM → 11 (после вычитания целых лет, февраль на 11 месяцев дальше от января).
  • YD → 358 (если игнорировать годы, разница между 7 февраля и 31 января равна 358 дням).

Быстрая проверка перед использованием

  • Убедитесь, что ячейки содержат реальные значения даты, а не текст. Формат ячеек должен быть «Дата».
  • start_date должен быть меньше или равен end_date.
  • Помните про разные единицы — некоторые (MD, YM, YD) игнорируют года или месяцы и дают «остаточные» значения.

Пошаговое применение DATEDIF: практический пример

Образец таблицы с датами запуска и посадки миссии Mars 2020

В этом примере у нас есть таблица с датами взлёта и посадки миссии Mars 2020:

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

Перед вводом формулы: форматируйте ячейки как дата

  1. Выделите ячейки с датами.
  2. В меню выберите «Формат» → «Число» → «Дата».

После настройки формата можно считать дни и месяцы.

Пример: сколько дней длился перелёт?

=DATEDIF(B2, B3, "D")

Результат: 569 (дней).

Сколько целых месяцев длился перелёт?

=DATEDIF(B2, B3, "M")

Результат: 18 (целых месяцев).

Расчёт месяцев между датами с помощью DATEDIF в Sheets.

Частые сценарии и готовые формулы

Ниже — набор задач, которые часто встречаются, и соответствующие формулы.

  1. Возраст в годах (полных лет) по дате рождения (A1):
=DATEDIF(A1, TODAY(), "Y")
  1. Возраст в годах и месяцах (например, для резюме или отчёта):
=DATEDIF(A1, TODAY(), "Y") & " лет " & DATEDIF(A1, TODAY(), "YM") & " месяцев"
  1. Полная длительность в месяцах между датами (A1 — начало, A2 — конец):
=DATEDIF(A1, A2, "M")
  1. Дни между двумя датами (включая переходы через годы):
=DATEDIF(A1, A2, "D")
  1. Остаток дней после вычитания лет и месяцев (полезно для формата «Y лет M месяцев D дней»):
=DATEDIF(A1, A2, "MD")
  1. Формат «Y лет, M месяцев, D дней» (готовый шаблон):
=DATEDIF(A1, A2, "Y") & " лет, " & DATEDIF(A1, A2, "YM") & " месяцев, " & DATEDIF(A1, A2, "MD") & " дней"

Пример с TODAY и расчёт до/после дня рождения

Пример таблицы с датой рождения и функцией TODAY

Задача: узнать, сколько дней прошло с последнего дня рождения и сколько осталось до следующего.

  1. В B1 хранится дата рождения Джона (например, 07.02.1990).
  2. В B2 вставляем текущую дату:
=TODAY()
  1. Сколько дней прошло с последнего дня рождения (используем YD — игнорируем годы):
=DATEDIF(B1, B2, "YD")
  1. Сколько дней осталось до следующего дня рождения (предположение: год = 365 дней; для учёта високосных годов используйте более точную логику):
=IF(DATEDIF(B1, B2, "YD")=0, 0, 365 - DATEDIF(B1, B2, "YD"))

Примечание: использование 365 даёт простую оценку; если нужен точный расчёт с учётом високосных годов, примените вычисление ближайшей следующей даты рождения и вычтите TODAY().

Альтернативные функции и подходы

Когда DATEDIF хорош, а когда лучше использовать другое?

  • DAYS(end, start) — возвращает разницу в днях как число (простая альтернатива для D).
  • NETWORKDAYS(start, end, [holidays]) — считает рабочие дни между датами с учётом выходных и списка праздников.
  • YEARFRAC(start, end, [basis]) — возвращает дробное число лет между датами (полезно для расчёта пропорций и процентов).
  • EDATE(start, months) — добавляет указанное число месяцев к дате (удобно при генерации промежуточных дат).

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

  • Нужен нецелый результат в годах → YEARFRAC.
  • Нужны рабочие дни → NETWORKDAYS.
  • Хочется работать с датами как с числами → VALUE/DAYS.

Ограничения и подводные камни (когда DATEDIF даёт неправильное ожидание)

  • Порядок дат: если start_date > end_date, функция вернёт ошибку.
  • MD, YM, YD возвращают «остаточные» дни/месяцы и иногда вводят в заблуждение при визуальном подсчёте, особенно при высокосных годах. Всегда проверяйте интерпретацию этих единиц.
  • DATEDIF может не учитывать конкретные правила переносов рабочих дней, часовые пояса и временные зоны — она работает с датами без временной компоненты.

Important: для точных расчётов с включением времени (часы/минуты) используйте разницу числовых значений даты/времени и форматы, а не DATEDIF.

Сравнение DATEDIF и других подходов — матрица совместимости

ЗадачаDATEDIFDAYSNETWORKDAYSYEARFRAC
Целые дни между датамиДаДа (просто)НетНет
Целые месяцы/годыДаНетНетЧастично (дробные годы)
Рабочие дниНетНетДаНет
Дробные года (для начисления процентов)НетНетНетДа

Практическая методика: как выбрать формулу (мини-методология)

  1. Определите единицу результата: дни/месяцы/годы/рабочие дни.
  2. Решите, нужен ли целый результат или дробный.
  3. Учтите праздники/выходные и високосные годы.
  4. Выберите функцию: DATEDIF для целых лет/месяцев/остатков; DAYS для простых дней; NETWORKDAYS для рабочих дней; YEARFRAC для дробных лет.
  5. Напишите тесты на крайние случаи (см. раздел «Тесты/критерии приёмки»).

Decision flowchart (Mermaid)

flowchart TD
  A[Нужна разница между датами?] --> B{Какая единица?}
  B --> |Дни| C[Использовать DAYS или DATEDIF с 'D']
  B --> |Рабочие дни| D[Использовать NETWORKDAYS]
  B --> |Месяцы/годы 'целые'| E[Использовать DATEDIF с 'M' или 'Y']
  B --> |Дробные годы| F[Использовать YEARFRAC]
  C --> G{Нужны остатки месяцев/дней?}
  G --> |Да| H[DATEDIF с 'MD' или 'YM']
  G --> |Нет| I[Простая разница]

Рольные чек-листы (что проверить перед публикацией отчёта)

Data Analyst:

  • Формат даты в исходных ячейках — дата, не текст.
  • Проверены крайние значения (start > end).
  • Указаны праздники для NETWORKDAYS.
  • Документирована логика округления.

Project Manager:

  • Есть пояснение, что возвращают MD/YM/YD.
  • Проверена миграция расчётов при смене временной зоны.
  • Согласован формат представления (Y M D).

Разработчик/Автоматизация:

  • Формулы работают при массовой обработке (нет ссылок на конкретные локальные ячейки).
  • Обработаны ошибки (#NUM!, #VALUE!).
  • Написаны тесты/сценарии регрессии.

Тесты и критерии приёмки

  1. Тест: start_date = 2020-01-01, end_date = 2021-01-01

    • Ожидается DATEDIF(…,”Y”) = 1
    • Ожидается DATEDIF(…,”YD”) = 0
  2. Тест: start_date = 2020-02-29, end_date = 2021-02-28 (високосный год)

    • Проверьте поведение MD/YD; ожидается аккуратная обработка дней при переходе через 29 февраля
  3. Тест: start_date > end_date

    • Ожидается ошибка; чек-лист: либо контролировать порядок дат, либо применять: =IF(A1>A2, “Ошибка: дата начала позже даты окончания”, DATEDIF(…))
  4. Тест для рабочий дней: используйте NETWORKDAYS с праздниками и проверьте совпадение с ручным перечнётом.

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

  • Формулы выдают ожидаемые значения для базовых и граничных сценариев.
  • Все входные даты проверены на формат.
  • Документация присутствует в отчёте.

Шаблоны и сниппеты (cheat sheet)

Шаблон: возврат человекочитаемого интервала между A1 и A2

=DATEDIF(A1,A2,"Y") & " лет, " & DATEDIF(A1,A2,"YM") & " месяцев, " & DATEDIF(A1,A2,"MD") & " дней"

Сниппет для обработки ошибки порядка дат:

=IF(A1>A2, "Ошибка: начальная дата позже конечной", DATEDIF(A1,A2,"D"))

Шаблон для вычисления точной даты следующего дня рождения:

=DATE(YEAR(TODAY()) + (DATE(YEAR(TODAY()), MONTH(A1), DAY(A1)) < TODAY()), MONTH(A1), DAY(A1))

И потом просто: =DATEDIF(TODAY(), <формуласледующегодня_рождения>, “D”)

Совместимость и переносимость

  • Google Sheets: поддерживает DATEDIF с перечисленными unit.
  • Microsoft Excel: также поддерживает DATEDIF, но в некоторых версиях функция считается «не документированной» в справке Excel — поведение схожее.
  • При экспорте/импорте между платформами проверяйте форматы дат и локаль (например, день/месяц/год vs месяц/день/год).

Совет по локали: если у вашей таблицы нестандартная локаль, убедитесь, что даты парсятся корректно при импортe CSV.

Галерея краевых случаев

  • Даты, включающие 29 февраля (високосный день) — проверяйте при расчётах «MD» и «YD».
  • Разница в один день (например, 31 января → 1 февраля) — MD и YM могут выглядеть неожиданно.
  • Большие интервалы (несколько десятилетий) — используйте комбинированный формат «Y лет M месяцев D дней».

Пример таблицы в Google Sheets

Безопасность и приватность

Функции даты не отправляют данные на внешние сервисы — все вычисления происходят внутри таблицы. Тем не менее, при работе с персональными данными (даты рождения, сроки контрактов) соблюдайте внутренние политики хранения и доступа.

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

DATEDIF — надёжный инструмент для получения целых лет, месяцев и дней между датами в Google Sheets. Для рабочих дней, дробных лет или учёта праздников используются дополнительные функции: NETWORKDAYS, YEARFRAC, DAYS. Всегда проверяйте формат ячеек и порядок дат, и добавляйте обработку ошибок в автоматизированных отчётах.

Использование вычитания в Google Sheets

Полезные формулы на заметку:

  • Возраст (целые годы): =DATEDIF(A1, TODAY(), “Y”)
  • Полная длительность: =DATEDIF(A1, A2, “Y”) & “ лет, “ & DATEDIF(A1, A2, “YM”) & “ месяцев”
  • Рабочие дни: =NETWORKDAYS(A1, A2, HolidaysRange)

Important: перед массовым применением протестируйте формулы на граничных наборах данных.


Короткая подсказка для социальных сетей: освоив DATEDIF, вы легко считаете возраст, сроки и длительности в Google Sheets. Начните с шаблонов в разделе “Шаблоны и сниппеты”.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Как искать жильё на Airbnb для отпуска
Путешествия

Как искать жильё на Airbnb для отпуска

Arduino Pong: ретро-игра на TV
Arduino

Arduino Pong: ретро-игра на TV

Как подготовиться к идеальному Дню благодарения
Праздники

Как подготовиться к идеальному Дню благодарения

Планирование групповой поездки с друзьями
Путешествия

Планирование групповой поездки с друзьями

DATEDIF в Google Sheets: считать разницу между датами
Google Sheets

DATEDIF в Google Sheets: считать разницу между датами

Виртуальные рабочие столы Windows для фокуса
Продуктивность

Виртуальные рабочие столы Windows для фокуса