Обратите внимание, что CURTIME(), UTC_TIME(), UTC_TIMESTAMP(), и TIMEDIFF() могут быть преобразованы в числовые типы с помощью произвольных функций преобразования, таких как BIGINT(), DOUBLE() и т.д.
Возвращает текущую метку времени в виде INTEGER.
- SQL
select NOW();+------------+
| NOW() |
+------------+
| 1615788407 |
+------------+Возвращает текущее время в локальном часовом поясе в формате hh:ii:ss.
- SQL
select CURTIME();+-----------+
| CURTIME() |
+-----------+
| 07:06:30 |
+-----------+Возвращает текущую дату в локальном часовом поясе в формате YYYY-MM-DD.
- SQL
select curdate();+------------+
| curdate() |
+------------+
| 2023-08-02 |
+------------+Возвращает текущее время в часовом поясе UTC в формате hh:ii:ss.
- SQL
select UTC_TIME();+------------+
| UTC_TIME() |
+------------+
| 06:06:18 |
+------------+Возвращает текущее время в часовом поясе UTC в формате YYYY-MM-DD hh:ii:ss.
- SQL
select UTC_TIMESTAMP();+---------------------+
| UTC_TIMESTAMP() |
+---------------------+
| 2021-03-15 06:06:03 |
+---------------------+Возвращает целочисленное значение секунд (в диапазоне 0..59) из аргумента метки времени, согласно текущему часовому поясу.
- SQL
select second(now());+---------------+
| second(now()) |
+---------------+
| 52 |
+---------------+Возвращает целочисленное значение минут (в диапазоне 0..59) из аргумента метки времени, согласно текущему часовому поясу.
- SQL
select minute(now());+---------------+
| minute(now()) |
+---------------+
| 5 |
+---------------+Возвращает целочисленное значение часов (в диапазоне 0..23) из аргумента метки времени, согласно текущему часовому поясу.
- SQL
select hour(now());+-------------+
| hour(now()) |
+-------------+
| 7 |
+-------------+Возвращает целочисленное значение дня месяца (в диапазоне 1..31) из аргумента метки времени, согласно текущему часовому поясу.
- SQL
select day(now());+------------+
| day(now()) |
+------------+
| 15 |
+------------+Возвращает целочисленное значение месяца (в диапазоне 1..12) из аргумента метки времени, согласно текущему часовому поясу.
- SQL
select month(now());+--------------+
| month(now()) |
+--------------+
| 3 |
+--------------+Возвращает целочисленное значение квартала года (в диапазоне 1..4) из аргумента метки времени, согласно текущему часовому поясу.
- SQL
select quarter(now());+----------------+
| quarter(now()) |
+----------------+
| 2 |
+----------------+Возвращает целочисленное значение года (в диапазоне 1969..2038) из аргумента метки времени, согласно текущему часовому поясу.
- SQL
select year(now());+-------------+
| year(now()) |
+-------------+
| 2024 |
+-------------+Возвращает название дня недели для заданного аргумента метки времени, согласно текущему часовому поясу.
- SQL
select dayname(now());+----------------+
| dayname(now()) |
+----------------+
| Wednesday |
+----------------+Возвращает название месяца для заданного аргумента метки времени, согласно текущему часовому поясу.
- SQL
select monthname(now());+------------------+
| monthname(now()) |
+------------------+
| August |
+------------------+Возвращает целочисленный индекс дня недели (в диапазоне 1..7) для заданного аргумента метки времени, согласно текущему часовому поясу. Обратите внимание, что неделя начинается с воскресенья.
- SQL
select dayofweek(now());+------------------+
| dayofweek(now()) |
+------------------+
| 5 |
+------------------+Возвращает целочисленное значение дня года (в диапазоне 1..366) для заданного аргумента метки времени, согласно текущему часовому поясу.
- SQL
select dayofyear(now());+------------------+
| dayofyear(now()) |
+------------------+
| 214 |
+------------------+Возвращает целочисленное значение года и код дня первого дня текущей недели (в диапазоне 1969001..2038366) для заданного аргумента метки времени, согласно текущему часовому поясу.
- SQL
select yearweek(now());+-----------------+
| yearweek(now()) |
+-----------------+
| 2023211 |
+-----------------+Возвращает целочисленное значение года и месяца (в диапазоне 196912..203801) из аргумента метки времени, согласно текущему часовому поясу.
- SQL
select yearmonth(now());+------------------+
| yearmonth(now()) |
+------------------+
| 202103 |
+------------------+Возвращает целочисленное значение года, месяца и дня (в диапазоне от 19691231 до 20380119) на основе текущего часового пояса.
- SQL
select yearmonthday(now());+---------------------+
| yearmonthday(now()) |
+---------------------+
| 20210315 |
+---------------------+Вычисляет разницу между двумя метками времени в формате hh:ii:ss.
- SQL
select timediff(1615787586, 1613787583);+----------------------------------+
| timediff(1615787586, 1613787583) |
+----------------------------------+
| 555:33:23 |
+----------------------------------+Вычисляет количество дней между двумя заданными метками времени.
- SQL
select datediff(1615787586, 1613787583);+----------------------------------+
| datediff(1615787586, 1613787583) |
+----------------------------------+
| 23 |
+----------------------------------+Форматирует часть даты из аргумента метки времени в строку в формате YYYY-MM-DD.
- SQL
select date(now());+-------------+
| date(now()) |
+-------------+
| 2023-08-02 |
+-------------+Форматирует часть времени из аргумента метки времени в строку в формате HH:MM:SS.
- SQL
select time(now());+-------------+
| time(now()) |
+-------------+
| 15:21:27 |
+-------------+Возвращает отформатированную строку на основе предоставленных аргументов даты и формата. Аргумент формата использует те же спецификаторы, что и функция strftime. Для удобства, вот некоторые распространённые спецификаторы формата:
%Y- Год из четырёх цифр%m- Двухзначный месяц (01-12)%d- Двухзначный день месяца (01-31)%H- Двухзначный час (00-23)%M- Двухзначная минута (00-59)%S- Двухзначная секунда (00-59)%T- Время в 24-часовом формате (%H:%M:%S)
Обратите внимание, что это не полный список спецификаторов. Пожалуйста, обратитесь к документации по strftime() для вашей операционной системы, чтобы получить полный список.
- SQL
SELECT DATE_FORMAT(NOW(), 'year %Y and time %T');+------------------------------------------+
| DATE_FORMAT(NOW(), 'year %Y and time %T') |
+------------------------------------------+
| year 2023 and time 11:54:52 |
+------------------------------------------+Этот пример форматирует текущие дату и время, отображая четырехзначный год и время в 24-часовом формате.
DATE_HISTOGRAM(expr, {calendar_interval='unit_name'}) принимает размер корзины в виде названия единицы и возвращает номер корзины для значения. Значения округляются до ближайшей корзины. Ключевая функция:
key_of_the_bucket = interval * floor ( value / interval )
Интервалы могут быть указаны с помощью названия единицы, например week, или как одна единица, например 1M. Однако множественные единицы, такие как 2d, не поддерживаются с calendar_interval, но разрешены с fixed_interval.
Допустимые интервалы для calendar_interval:
minute,1mhour,1hday,1dweek,1w(неделя — это интервал между начальным днем недели, часом, минутой, секундой и следующей неделей, но в тот же день и время недели)month,1Myear,1y(год — это интервал между начальным днем месяца, временем и следующим годом, но в тот же день месяца и время)
Допустимые интервалы для fixed_interval:
minute,2mhour,3hday,5d
Используется в агрегациях, FACET и группировках.
Пример:
SELECT COUNT(*),
DATE_HISTOGRAM(tm, {calendar_interval='month'}) AS months
FROM facets
GROUP BY months ORDER BY months ASC;
DATE_RANGE(expr, {range_from='date_math', range_to='date_math'}) принимает набор диапазонов и возвращает номер корзины для значения.
Выражение включает значение range_from и исключает значение range_to для каждого диапазона. Диапазон может быть открытым — иметь только значение range_from или только range_to.
Отличие от функции RANGE() в том, что значения range_from и range_to могут быть выражены в выражениях Date math.
Используется в агрегациях, FACET и группировках.
Пример:
SELECT COUNT(*),
DATE_RANGE(tm, {range_to='2017||+2M/M'},{range_from='2017||+2M/M',range_to='2017||+5M/M'},{range_from='2017||+5M/M'}) AS points
FROM idx_dates
GROUP BY points ORDER BY points ASC;
Date math позволяет работать с датами и временем непосредственно в ваших поисках. Это особенно полезно для обработки данных, которые меняются со временем. С помощью date math вы можете легко находить записи за определенный период, анализировать тенденции данных или управлять временем удаления информации. Это упрощает работу с датами, позволяя добавлять или вычитать время от заданной даты, округлять даты до ближайшей единицы времени и многое другое, всё это в рамках ваших поисковых запросов.
Для использования date math вы начинаете с базовой даты, которая может быть:
nowдля текущей даты и времени,- или конкретной строкой даты, заканчивающейся на
||.
Затем вы можете модифицировать эту дату операциями, такими как:
+1yчтобы добавить один год,-1hчтобы вычесть один час,/mчтобы округлить до ближайшего месяца.
Вы можете использовать следующие единицы в операциях:
sдля секунд,mдля минут,h(илиH) для часов,dдля дней,wдля недель,Mдля месяцев,yдля лет.
Вот несколько примеров использования date math:
now+4hозначает четыре часа от текущего момента.now-2d/d— время два дня назад, округленное до ближайшего дня.2010-04-20||+2M/d— 20 июня 2010 года, округленное до ближайшего дня.