предисловие
При ежедневном развитии бизнеса нам часто приходится иметь дело с датой SQl, например, запрашивать заказы за последние 30 дней, запрашивать объем заказов за определенный месяц, подсчитывать количество заказов, размещенных в час в определенный день, и т. д. , поэтому я разобрался со следующими функциями обработки времени MySql.
DATE_ADD()
определение:Добавляет указанный интервал времени к дате.
Формат синтаксиса:
DATE_ADD(date,INTERVAL expr unit)
демо:
mysql> SELECT DATE_ADD('2018-05-01',INTERVAL 1 DAY);
-> '2018-05-02'
//如果你查最近七天内的订单,可以这样:
mysql> SELECT * FROM `order` WHERE OrderDate>=DATE_ADD(NOW(),INTERVAL -7 DAY);
DATE_SUB()
определение:Вычитает указанный интервал времени из даты.
Формат синтаксиса:
DATE_SUB(date,INTERVAL expr unit)
демо:
SELECT DATE_SUB('2018-05-01',INTERVAL 1 YEAR);
-> '2017-05-01'
//如果你查最近七天内的订单,可以这样:
select * from `order` where OrderDate>=DATE_SUB(NOW(),INTERVAL 7 DAY);
DATEDIFF()
определение:Возвращает количество дней между двумя датами
Формат синтаксиса:
DATEDIFF(expr1,expr2)
демо:
mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
-> 1
mysql> SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31');
-> -31
//如果你查最近30天内的订单,可以这样:
select * from `order` where DATEDIFF(NOW(),OrderDate)<=30;
DAYOFWEEK()
определение:Указывает, что дата возврата является днем недели, помните: воскресенье = 1, понедельник = 2, ... суббота = 7
Формат синтаксиса:
DAYOFWEEK(date)
демо:
mysql> SELECT DAYOFWEEK('2007-02-03');
-> 7
//查询星期六下的订单
mysql> SELECT * FROM `order` WHERE DAYOFWEEK(OrderDate) =7;
MONTH()
определение:Дата возврата - месяц текущего года, 1 возвращается в январе, ... , 12 возвращается в декабре
Формат синтаксиса:
MONTH(date)
демо:
mysql> SELECT MONTH('2019-11-24');
-> 11
//查看今年11月份下的订单
SELECT * FROM `order` WHERE OrderDate>= '2019-01-01' and MONTH(OrderDate) =11 ;
YEAR()
определение:Датой возврата является год, от 1000 до 9999.
Формат синтаксиса:
YEAR(date)
демо:
mysql> SELECT YEAR('1987-01-01');
-> 1987
// 查看2018年下的订单总数
SELECT count(*) FROM `order` WHERE Year(OrderDate) =2018 ;
HOUR()
определение:Возвращает часовое значение даты или времени, диапазон значений (0-23).
Формат синтаксиса:
HOUR(time)
демо:
mysql> SELECT HOUR('10:05:03');
-> 10
// 查看2019年双11,0点下单量
SELECT count(*) FROM `order` WHERE OrderDate BETWEEN '2019-11-11' and '2019-11-12' and HOUR(OrderDate) =0 ;
DATE_FORMAT()
определение:Используется для отображения данных даты/времени в различных форматах. .
Формат синтаксиса:
DATE_FORMAT(date,format)
date — это соответствующая дата, а fromat — выходной формат. Формат формата следующий:
Формат | описывать |
---|---|
%a | Сокращенное название недели |
%b | Сокращенное название месяца |
%c | месяц, стоимость |
%D | день месяца с английским префиксом |
%d | День месяца, число (00-31) |
%e | день месяца, числовое (0-31) |
%f | микросекунды |
%H | Часы (00-23) |
%h | Часы (01-12) |
%i | минуты, числовое (00-59) |
%j | День года (001-366) |
%M | название месяца |
%m | месяц, число (00-12) |
%S | Секунды (00-59) |
%T | время, 24 часа (чч:мм:сс) |
%W | название недели |
%Y | год, 4 цифры |
демо:
mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y');
-> 'Sunday October 2009'
mysql> SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s');
-> '22:23:00'
// 统计2019年11月23号,每小时的下单量
select hour(OrderDate) as hour,count(*) as counts from `order` where
DATE_FORMAT(OrderDate,'%Y-%m-%d') = '2019-11-23' group by hour(OrderDate);
EXTRACT()
определение:Используется для возврата отдельных частей даты/времени, таких как год, месяц, день, час, минута и т. д.
Формат синтаксиса:
EXTRACT(unit FROM date)
Параметр даты является допустимым выражением даты. Параметр unit может принимать следующие значения:
Стоимость единицы |
---|
SECOND |
MINUTE |
HOUR |
DAY |
WEEK |
MONTH |
YEAR |
... |
демо:
mysql> SELECT EXTRACT(YEAR FROM '2019-07-02');
-> 2019
mysql> SELECT EXTRACT(YEAR_MONTH FROM '2019-07-02 01:02:03');
-> 201907
mysql> SELECT EXTRACT(DAY_MINUTE FROM '2019-07-02 01:02:03');
-> 20102
//查询订单的年月日
mysql>SELECT EXTRACT(YEAR FROM OrderDate) AS OrderYear,
->EXTRACT(MONTH FROM OrderDate) AS OrderMonth,
->EXTRACT(DAY FROM OrderDate) AS OrderDay
->FROM `order`
СЕЙЧАС(), ДАТА(), ВРЕМЯ()
определение:
- NOW() возвращает текущую дату и время
- CURDATE() возвращает текущую дату
- CURTIME() возвращает текущее время
Формат синтаксиса:
NOW()
CURDATE()
CURTIME()
demo:
DATE(),DAY(), TIME()
определение:
- DATE() извлекает дату или часть даты выражения даты/времени
- ДЕНЬ() возвращает день месяца (1-31)
- TIME() извлекает временную часть даты или выражения даты/времени.
Формат синтаксиса:
DATE(expr)
DAY(date)
TIME(expr)
demo:
mysql> SELECT DATE('2003-12-31 01:02:03');
-> '2003-12-31'
mysql> select day('2017-02-03');
->3
mysql> SELECT TIME('2003-12-31 01:02:03');
-> '01:02:03'
mysql> SELECT TIME('2003-12-31 01:02:03.000123');
-> '01:02:03.000123'
Ссылка и спасибо
- Официальный сайт MySql
- Функция даты SQL(Woohoo. Мой 3school.com.can/SQL/SQL_Datang…
Личный публичный аккаунт
- Если вы хороший ребенок, который любит учиться, вы можете подписаться на мой официальный аккаунт, чтобы вместе учиться и обсуждать.
- Если вы считаете, что в этой статье есть какие-либо неточности, вы можете прокомментировать или подписаться на мой официальный аккаунт, пообщаться со мной в частном порядке, и все смогут учиться и прогрессировать вместе.