Функция CURRENT_DATE
Функция CURRENT_DATE возвращает текущую дату в формате год-месяц-день.
См. также функцию NOW, которая возвращает текущий момент времени в формате год-месяц-день часы:минуты:секунды.
См. также функцию CURRENT_TIME, возвращает текущее время в формате часы:минуты:секунды.
Синтаксис
Примеры
Все примеры будут по этой таблице workers, если не сказано иное:
id айди |
name имя |
date какая-то дата |
---|---|---|
1 | Дима | 2010-03-01 |
2 | Петя | 2011-04-02 |
3 | Вася | 2045-05-03 |
4 | Коля | 2046-06-04 |
Пример
В данном примере выбираются все работники, у которых дата больше текущей:
SQL запрос выберет следующие строки:
id айди |
name имя |
date какая-то дата |
---|---|---|
3 | Вася | 2045-05-03 |
4 | Коля | 2046-06-04 |
Пример
В данном примере выбираются все работники, у которых дата меньше текущей:
SQL запрос выберет следующие строки:
id айди |
name имя |
date какая-то дата |
---|---|---|
1 | Дима | 2010-03-01 |
2 | Петя | 2011-04-02 |
Пример
В данном примере в базу добавляется работник, при этом в поле date записывается текущая дата с помощью CURRENT_DATE:
Урок 76. Текущая дата
Приближается Новый год. Наши документы в полном порядке. На титульном листе красуется текущий год, то есть актуальная дата. А после новогодних каникул нас поджидает такая мелкая неприятность: Новый год наступил, а на документах осталась прежняя дата. Не знаю как вы, а мне до марта месяца попадаются документы, в которых надо исправить год и не в одном месте – год издания, дата утверждения, может быть и дата согласования.
По окончании этого урока вы сможете:
- Задать текущую дату в документе.
Урок 30 «Список иллюстраций». В нём дала определение понятия «Поле»:
Понять и запомнить! | Поле – это зарезервированный участок в документе, который отображает изменения определённого типа в документе. |
Каждое поле имеет свою ограниченную функцию и свой код (а вот о кодах полей много-много позже). Например, поле Оглавление, поле Номер страницы, поле Дата.
Преимущество использования полей состоит в том, что вставленное содержимое (дата, номер страницы, оглавление и т.п.) обновляется автоматически при каждом изменении. Например, если вы работаете над документом в течение нескольких дней, то поле «Time» (текущая дата) будет изменяться каждый день.
Откройте документ с красиво оформленным титульным листом (Урок 42. «Титульный лист»). Можете открыть учебный файл, который можно скачать тут.
1. Вставка поля «Дата»
Шаг 1. Определимся с местами вставки поля «Дата»:
Хорошо еще, что нет ещё и года согласования.
Обе даты находятся в колонтитулах, все согласно уроку 42.
Входим в колонтитулы (урок 38 и урок 43) и определяем место вставки поля, которое будет определять актуальный год:
Шаг 2. Вставляем поле «Дата» (лента Вставка → группа команд Текст → команда Экспресс-блоки → команда Поле… из выпадающего меню):
Появляется очень интересное диалоговое окно «Поле»:
- Категории поля – все поля (а их много) делятся на категории
- Список всех полей, поскольку категория выбрана «(Все)»
- Свойства поля – в зависимости от выбранного поля эта часть диалогового окна будет меняться
- Коды поля – идентификаторы, которые помогут разнообразить возможности полей
Шаг 3. Выбираем категорию «Дата и Время»:
Как мы видим, нет такого формата – текущий год. Решаем эту проблему.
Шаг 4. Смотрим коды поля и параметры поля:
Смотрим самый первый ключ. Простая логика нам подсказывает:
Шаг 5. Добавляем первый ключ в поле «Код поля» и аккуратно стираем «dd.MM»:
Шаг 6. Говорим ОК и ещё раз ОК и любуемся результатом:
Я допечатала «г.», чтобы никто не забыл, что это год.
Если вы щелкните по введённому полю, то увидите такую картину:
Поле по щелчку ЛМ окрашивается в серый цвет, поле окружает рамка с надписью «Обновить». Сохраните этот документ. Если вы откроете этот документ 1 января 2022 года, то вы увидите, что поле поменяло свое значение на «2022».
Для нижнего колонтитула вы можете повторить предыдущие шаги, а можно сделать проще.
Шаг 7. Копируем поле с текущим годом в буфер обмена → в нижнем колонтитуле находим место вставки из буфера обмена → вставляем → всё!
Причем я выделила и скопировала не только поле, а все содержимое ячейки (урок 51 «Таблица. Начало пути»). Потом я назначила полужирное начертание этому абзацу. Всё это никак не отразится кодах поля «Дата».
Как бы домашнее задание. Создайте шаблон служебной записки и вставьте поле «Дата» в полном формате:
Каждый раз при создании документа на основе этого шаблона в поле будет отражаться текущая дата. Порадуйте начальство!
Работа с датами на языке R (базовые возможности, а также пакеты lubridate и timeperiodsR)
Получить текущую дату в любом языке программирования, операция эквивалентная «Hello world!». Язык R не является исключением.
В этой статье мы разберёмся с тем, как устроена работа с датами в базовом синтаксисе языка R, а также рассмотрим несколько полезных пакетов, расширяющих его возможности при работе с датами:
- lubridate — пакет позволяющий производить арифметические вычисления между датами;
- timeperiodsR — пакет для работы с временными интервалами и их компонентами.
Содержание
Если вы интересуетесь анализом данных, и в частности языком R, возможно вам будут интересны мои telegram и youtube каналы. Большая часть контента которых посвящена языку R.
1.1. Преобразование текста в дату
1.2. Извлечение компонентов даты в базовом R
2.1. Преобразование текста в дату с помощью lubridate
2.2. Извлечение компонентов дат с помощью пакета lubridate
2.3. Арифметические операции с датами
3.1. Временные интервалы в timeperiodsR
3.2. Фильтрация вектора дат с помощью timeperiodsR
Работа с датами в базовом синтаксисе R
Преобразование текста в дату
В базовом R присутствует набор функций для работы с датами. Минус базового синтаксиса заключается в том, что регистр имён и аргументов функций очень разрознен, и практически не имеет логической связи. Тем не менее, базовые функции языка надо знать, поэтому начнём мы именно с них.
Наиболее часто при загрузке данных в R, из csv файлов, или других источников, вы получаете дату в виде текста. Для того, что бы привести этот текст к правильному типу данных используйте функцию as.Date() .
По умолчанию as.Date() принимает дату в двух форматах: ГГГГ-ММ-ДД или ГГГГ/ММ/ДД.
Если в вашем наборе данных даты представлены в каком либо другом формате, для преобразования можно использовать аргумент format .
format принимает в строковом виде операторы обозначающие какой-либо временной интервал и его формат, наиболее часто используемые значения приведены в таблице ниже:
Формат | Описание |
---|---|
%d | Номер дня в месяце |
%a | Аббревиатура названия дня недели |
%A | Полное название дня недели |
%w | Номер дня недели (0-6, где 0 это воскресенье) |
%m | Двухзначное обозначение месяца (01-12) |
%b | Аббревиатура имени месяца (apr, mar, . ) |
%B | Полное название месяца |
%y | Двухзначное обозначение года |
%Y | Четырёхзначное обозначение года |
%j | Номер дня в году (001 — 366) |
%U | Номер недели в году (00 — 53), начало недели Воскресенье |
%W | Номер недели в году (00 — 53), начало недели Понедельник |
Соответственно, «September 26, 2019» это — полное название месяца, число и год. Описать этот формат даты операторами можно так: «%B %d, %Y» .
Где:
- %B — Полное название месяца
- %d — Номер дня в месяце
- %Y — Четырёхзначное обозначение года
При описании формата даты важно включать все доп символы из вашей строки, например тире, запятые, точки, пробелы и так далее. В моём примере, «September 26, 2019», после даты стоит запятая, и в описание формата так же надо ставить запятую: «%B %d, %Y» .
Бывают ситуации, когда вы получаете дату не только не соответствующую стандартным форматам (ГГГГ-ММ-ДД или ГГГГ/ММ/ДД), но ещё и на языке, который отличается от установленного в вашей операционной системе по умолчанию. Например, вы загрузили данные, где дата указана вот в таком виде: «Декабрь 15, 2019 г.». Перед конвертацией этой строки в дату вам необходимо поменять локаль.
Извлечение компонентов даты в базовом R
В базовом R не так много функций позволяющих извлекать какую либо часть даты из объекта класса Date.
Помимо основного класса объектов Date в базовом R есть ещё 2 типа данных которые хранят отметку времени: POSIXlt, POSIXct. Основное отличие этих классов от Date заключается в том, что кроме даты они хранят время.
Функция Sys.time() возвращает текущую дату и время в формате POSIXct. Этот формат по смыслу похож на UNIXTIME, и хранит в себе количество секунд с момента начала эры UNIX (полночь (по UTC) с 31 декабря 1969 года на 1 января 1970).
Класс POSIXlt так же хранит в себе время и дату, и все их компоненты. Поэтому является объектом с более сложной структурой, но из которого легко получить любой компонент даты и времени т.к. по сути POSIXlt это list.
Преобразование числовых и текстовых данных в форматы POSIX* осуществляются функциями as.POSIXct() и as.POSIXlt() . Данные функции имеют небольшой набор аргументов.
- x — Число, строка или объект класса Date, который необходимо преобразовать;
- tz — Часовой пояс, по умолчанию «GMT»;
- format — Описание формата даты в которым представлены данные передаваемые в аргумент x;
- origin — Используется только при конвертации числа в POSIX, в этот аргумент необходимо передать объект даты, и времени от которого идёт отсчёт секунд. Как правило, используется для перевода из UNIXTIME.
Если ваши данные о дате и времени представлены в UNIXTIME, то для их конвертации в понятную, читаемую дату используйте следующий пример:
В origin вы можете указать любую временную метку. Например, если в ваших данных дата и время указаны как количество секунд начиная от 15 сентября 2019 года 12:15, то для преобразования их в дату используйте:
Работа с датами с помощью пакета lubridate
lubridate пожалуй самый популярный пакет для работы с датами на языке R. Он предоставляет вам дополнительно ещё три класса.
- durations — длительность, т.е. количество секунд между двумя временными метками;
- periods — периоды позволяют производить вычисления между датами понятными для человека интервалами: днями, месяцами, неделями и так далее;
- intervals — объекты предоставляющие начальный и конечный момент времени.
Установка дополнительных пакетов в языке R осуществляется стандартной функцией install.packages() .
Установка пакета lubridate :
Преобразование текста в дату с помощью lubridate
Функции пакета lubridate значительно упрощают процесс конвертации текста в дату, а так же позволяют вам проводить любые арифметические операции с датами и временем.
Получить текущую дату, или дату и время вам помогут функции today() и now() .
Для преобразования строки в дату в lubridate есть целое семейство функций имена которых состоят всегда из трёх букв, и обозначают последовательность компонентов даты:
- y — год
- m — месяц
- d — день
- ymd()
- ydm()
- mdy()
- myd()
- dmy()
- dym()
- yq()
Несколько примеров для преобразования строк в даты:
Как видите lubridate значительно более эффективно умеет распознавать описание дат в виде текста, и позволяет вам преобразовывать текст в дату не используя дополнительных операторов для описания формата.
Извлечение компонентов дат с помощью пакета lubridate
Также с помощью lubridate можно получить любой компонент из даты:
Арифметические операции с датами
Но, наиболее важный и основной функционал lubridate заключается в возможности производить различные арифметические операции с датами.
Округление даты осуществляется тремя функциями:
- floor_date — округление к ближайшему прошедшему времени
- ceiling_date — округление к ближайшему будущему времени
- round_date — округление к ближайшему времени
Каждая из этих функций имеет аргумент unit, который позволяет вам указать единицу округления: second, minute, hour, day, week, month, bimonth, quarter, season, halfyear, year
Итак, давайте разберёмся с тем, как получить дату, которая будет через 8 дней после текущей даты и проводить различные другие арифметические вычисления между двумя датами.
Упрощённая работа с периодами, пакет timeperiodsR.
timeperiodsR — свежий пакет для работы с датами который был опубликован на CRAN в сентябре 2019 года.
Установка пакета timeperiodsR :
Основное назначение — быстрое определение некоторого временного интервала относительно заданной даты. Например с помощью его функций вы легко можете:
- Получить прошлую неделю, месяц, квартал или год в R.
- Получить заданное количество временных интервалов относительно даты, например прошлые 4 недели.
- Легко извлекать из полученного временного интервала его компоненты: начальную и конечную дату, количество дней попавших в интервал, всю последовательность дат которые в него входят.
Название всех функций пакета timeperiodsR интуитивно понятны, и состоят из двух частей: направление_интервал, где:
- направление в котором необходимо двигаться относительно заданной даты: last_n, previous, this, next, next_n.
- временной интервал для вычисления периода: day, week, month, quarter, year.
- last_n_days()
- last_n_weeks()
- last_n_months()
- last_n_quarters()
- last_n_years()
- previous_week()
- previous_month()
- previous_quarter()
- previous_year()
- this_week()
- this_month()
- this_quarter()
- this_year()
- next_week()
- next_month()
- next_quarter()
- next_year()
- next_n_days()
- next_n_weeks()
- next_n_months()
- next_n_quarters()
- next_n_years()
- custom_period()
Временные интервалы в timeperiodsR
Эти функции полезны в случаях, когда вам необходимо строить отчёты на основе данных за прошлую неделю или месяц. Чтобы получить прошлый месяц воспользуйтесь одноимённой функцией previous_month() :
После чего у вас будет объект prmonth класса tpr, из которого легко можно получить следующие компоненты:
- дату начала периода, в нашем примере это прошлый месяц
- дату завершения периода
- количество дней входящих в период
- последовательность дат входящих в период
Причём получить каждый из компонентов можно разными способами:
Также вы можете получить любой из компонентов используя аргумент part, который присутствует в каждой из функций пакета. Возможные значения: start, end, sequence, length.
Итак, давайте рассмотрим все аргументы доступные в функциях пакета timeperiodsR :
- x — Опорная дата от которой будет вычислять временной период, по умолчанию текущая дата;
- n — Количество интервалов которые будут входить в период, например 3 предыдущие недели;
- part — Какой компонент объекта tpr вам необходимо получить, по умолчанию all ;
- week_start — Аргумент присутствует только в функциях для работы с неделями, и позволяет задать номер дня недели который будет считаться её началом, по умолчанию началом недели является понедельник, но вы можете задать любой с 1 — понедельник по 7 — воскресенье.
Таким образом, вы можете вычислять любой временной период относительно текущей, либо любой другой заданной даты, приведу ещё несколько примеров:
6 октября это воскресенье:
Нам необходим период, который относительно 6 октября возьмёт 3 предыдущие недели. Не включая неделю, в которую входит само 6 октября. Соответственно это период с 9 по 29 сентября.
В этом примере нас интересует месяц, который был 4 месяца назад, если отталкиваться от 16 сентября 2019 года, соответственно это был май 2019 года.
Фильтрация вектора дат с помощью timeperiodsR
Для фильтрации дат в timeperiodsR есть несколько операторов:
- %left_out% — сравнивает два объекта класса tpr, и возвращает значение из левого, которые отсутствуют в правом.
- %left_in% — сравнивает два объекта класса tpr, и возвращает даты из левого объекта которые входят в правый.
- %right_out% — сравнивает два объекта класса tpr, и возвращает значение из правого, которые отсутствуют в левом.
- %right_in% — сравнивает два объекта класса tpr, и возвращает даты из правого объекта которые присутвуют в левом.
У пакета timeperiodsR есть официальный, русскоязычный плейлист на YouTube.
Заключение
Мы подробно рассмотрели классы объектов которые предназначены в языке R для работы с датами. Также теперь вы умеете проводить над датами арифметические операции, и быстро получать любые временные периоды с помощью пакета timeperiodsR .
Если вам интересен язык R приглашаю вас подписаться на мой телеграмм канал R4marketing, в котором я на ежедневной основе делюсь полезными материалами о применении языка R в решении своих повседневных задач.
Дата сегодня.
Мы часто задаем вопрос: «Какое сегодня число?» или » Какая дата сегодня?». Мы спрашиваем у друзей или знакомых, пытаясь вспомнить самостоятельно. Для чего же нам это необходимо? А для чего угодно: не пропустить важное событие в жизни, праздник, встречу, день рождения близких и знакомых, дату, когда нужно идти в отпуск или отправляться в командировку. В этих и других случаях важно знать какое сегодня число или дата. По этим же причинам необходимо, чтобы всегда была возможность узнать точное время.
Сервис ДАТА-СЕГОДНЯ.РФ предоставляет возможность быстро узнать дату сегодняшнего дня или какое сегодня число, а также точное время. Но и это еще не все. С помощью сервиса можно узнать и другую информацию: какой сегодня день недели на русском и английском языках, сколько дней в году, високосный год или нет, сколько дней в месяце, какой день года и многое-многое другое. Сервис ДАТА-СЕГОДНЯ.РФ станет Вашим реальным помощником в организации жизненного календаря.