Дата (Date)
Поле типа Дата используется для хранения календарных дат без учета времени.
Основные характеристики
- Тип данных: Дата (без времени)
- Формат хранения: ISO 8601 (YYYY-MM-DD)
- Диапазон: От 1900-01-01 до 2100-12-31
- Часовой пояс: Не учитывается (только дата)
Форматы отображения
Дату можно отображать в различных форматах:
- DD.MM.YYYY — 25.11.2025 (европейский формат)
- MM/DD/YYYY — 11/25/2025 (американский формат)
- YYYY-MM-DD — 2025-11-25 (ISO формат)
- D MMMM YYYY — 25 ноября 2025 (полный формат)
- Относительный — "сегодня", "вчера", "3 дня назад"
Настройки поля
При создании поля типа "Дата" доступны следующие настройки:
- Название поля: Отображаемое имя поля
- Системное имя: Уникальный идентификатор для API
- Описание: Подсказка для пользователей
- Обязательное поле: Требовать заполнения
- Значение по умолчанию: Автоматически подставляемая дата
- Не задано
- Текущая дата
- Конкретная дата
- Формат отображения: Выбор формата из списка
- Автозаполнение: Автоматически устанавливать текущую дату при создании
Примеры использования
Дата рождения
{
"name": "birth_date",
"type": "date",
"required": true
}
Дата публикации
{
"name": "publish_date",
"type": "date",
"default": "today"
}
Срок выполнения
{
"name": "due_date",
"type": "date",
"required": true
}
Дата создания
{
"name": "created_date",
"type": "date",
"default": "today",
"readonly": true
}
Работа через API
Создание записи
const record = await emd.database.collection('tasks').create({
title: 'Подготовить отчет',
due_date: '2025-12-31'
});
// Или с объектом Date
const record = await emd.database.collection('tasks').create({
title: 'Подготовить отчет',
due_date: new Date('2025-12-31')
});
Поиск по дате
// Задачи с дедлайном 31 декабря 2025
const tasks = await emd.database.collection('tasks').find({
due_date: '2025-12-31'
});
// Задачи с дедлайном после определенной даты
const tasks = await emd.database.collection('tasks').find({
due_date: { $gt: '2025-11-25' }
});
// Задачи с дедлайном в диапазоне
const tasks = await emd.database.collection('tasks').find({
due_date: {
$gte: '2025-11-01',
$lte: '2025-11-30'
}
});
Обновление даты
await emd.database.collection('tasks').update(recordId, {
due_date: '2025-12-15'
});
Работа с текущей датой
// Установить текущую дату
await emd.database.collection('tasks').update(recordId, {
completed_date: new Date().toISOString().split('T')[0]
});
Операторы для полей даты
$eq— равно$ne— не равно$gt— позже (больше)$gte— позже или равно$lt— раньше (меньше)$lte— раньше или равно$in— входит в список дат$nin— не входит в список дат
Специальные запросы
Задачи на сегодня
const today = new Date().toISOString().split('T')[0];
const tasks = await emd.database.collection('tasks').find({
due_date: today
});
Просроченные задачи
const today = new Date().toISOString().split('T')[0];
const overdueTasks = await emd.database.collection('tasks').find({
due_date: { $lt: today },
status: { $ne: 'Завершена' }
});
Задачи на эту неделю
const today = new Date();
const weekEnd = new Date(today);
weekEnd.setDate(today.getDate() + 7);
const tasks = await emd.database.collection('tasks').find({
due_date: {
$gte: today.toISOString().split('T')[0],
$lte: weekEnd.toISOString().split('T')[0]
}
});
Задачи за прошлый месяц
const now = new Date();
const monthStart = new Date(now.getFullYear(), now.getMonth() - 1, 1);
const monthEnd = new Date(now.getFullYear(), now.getMonth(), 0);
const tasks = await emd.database.collection('tasks').find({
created_date: {
$gte: monthStart.toISOString().split('T')[0],
$lte: monthEnd.toISOString().split('T')[0]
}
});
Сортировка по дате
// Сортировка по возрастанию (от старых к новым)
const tasks = await emd.database.collection('tasks')
.find()
.sort({ due_date: 1 });
// Сортировка по убыванию (от новых к старым)
const tasks = await emd.database.collection('tasks')
.find()
.sort({ due_date: -1 });
Рекомендации
- Используйте тип Дата для календарных событий без привязки ко времени
- Для событий с точным временем используйте тип Дата и время
- Храните даты в формате ISO 8601 (YYYY-MM-DD)
- Используйте автозаполнение для полей
created_date - Для дедлайнов и сроков используйте валидацию (минимальная дата = сегодня)
- Учитывайте часовые пояса пользователей при отображении
Отличие от других типов
- Date vs DateTime: Date только для календарных дат, DateTime для точного времени
- Date vs String: Date обеспечивает валидацию и специальные операторы сравнения
- Date vs Number: Date для календарных дат, Number для временных меток (timestamp)