Работа с датой и временем в MySQL
Основы Laravel
Пройдя курс, Вы узнаете:
— Как установить и настроить Laravel
— Всю необходимую базу по Laravel
— Как создавать несложные сайты на Laravel
Общая продолжительность курса 4.5 часа, плюс множество упражнений и поддержка!
Чтобы получить Видеокурс,
заполните форму
E-mail: | |
Имя: | |
Другие курсы
Как создать профессиональный Интернет-магазин
После семинара:
— Вы будете знать, как создать Интернет-магазин.
— Вы получите бесплатный подарок с подробным описанием каждого шага.
— Вы сможете уже приступить к созданию Интернет-магазина.
Записаться
Другие курсы
Делай то, что в жизни тебе даётся легко, и делай это изо всех сил.
Неизвестный
В данной статье мы поговорим о том как работать с датой и временем в MySQL. Посмотрим как сохранять и извлекать значения данного типа из таблиц.
Форматы даты и времени в MySQL
MySQL поддерживает несколько форматов даты и времени:
- DATE — хранит значение даты в формате ГГГГ-ММ-ДД. Например 2019-03-28
- DATETIME — хранит значение даты и времени в формате ГГГГ-ММ-ДД HH:MM:SS. Например, 2019-03-28 10:00:00. Диапазон поддерживаемых значений — от 1000-01-01 00:00:00 до 9999-12-31 23:59:59
- TIMESTAMP — похож на DATETIME, с небольшими отличиями, зависящими от версии MySQL и режима в котором запущен сервер
Создание таблицы с колонками DATE и DATETIME
CREATE TABLE `orders` (
`order_no` INT NOT NULL AUTO_INCREMENT,
`order_item` TEXT NOT NULL,
`order_date` DATETIME NOT NULL,
`order_delivery` DATE NOT NULL,
PRIMARY KEY (`order_no`)
)
ENGINE = InnoDB;
Колонка order_date имеет тип DATETIME, так как предполагается, что нам необходимо записывать точное время и дату осуществления заказа.
Формат даты и времени может быть следующий:
2019-03-28 10:00:00
20190328100000
2019/03/28 10.00.00
2019*03*28*10*00*00
Как видите, MySQL обеспечивает широкие и гибкие возможности по форматирванию даты и времени.
В добавок к механизму хранения даты и времени, в MySQL есть большой набор функций для работы датой и временем.
- ADDDATE() — Суммирует даты
- CURDATE() — Возвращает текущую дату
- CURTIME() — Возвращает текущее системное время
- DATE_FORMAT() — Форматирует дату
- DAYNAME() — Возвращает имя дня недели
- DAYOFMONTH() — Возвращает день месяца (1-31)
- DAYOFYEAR() — Возвращает день года (1-366)
-
- HOUR() — Извлекает часы
- NOW() — Возвращает текущую дату и время
Вот такие развитые средства содержит MySQL для работы с датой и временем.
- Создано 28.03.2019 11:49:34
- Михаил Русаков
Предыдущая статьяСледующая статья
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
<a href=»https://myrusakov. ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>Она выглядит вот так:
- Текстовая ссылка:
<a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи):
[URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]
База Данных MySQL Работа с датами
HTML5CSS.ru
ЛУЧШИЙ САЙТ ДЛЯ РАЗРАБОТЧИКОВ
❮ Назад Дальше ❯
Даты SQL
Самая сложная часть при работе с датами заключается в том, чтобы убедиться, что формат даты, которую вы пытаетесь вставить, совпадает с форматом столбца Date в базе данных.
Пока ваши данные содержат только часть даты, ваши запросы будут работать должным образом. Однако, если часть времени участвует, она становится все более сложным.
Типы данных дат SQL
MySQL поставляется со следующими типами данных для хранения даты или значения даты/времени в базе данных:
- DATE — format YYYY-MM-DD
- DATETIME — format: YYYY-MM-DD HH:MI:SS
- TIMESTAMP — format: YYYY-MM-DD HH:MI:SS
- YEAR — format YYYY or YY
SQL Server поставляется со следующими типами данных для хранения даты или значения даты и времени в базе данных:
- DATE — format YYYY-MM-DD
- DATETIME — format: YYYY-MM-DD HH:MI:SS
- SMALLDATETIME — format: YYYY-MM-DD HH:MI:SS
- TIMESTAMP — format: a unique number
Примечание: Типы дат выбираются для столбца при создании новой таблицы в базе данных!
SQL работа с датами
Вы можете сравнить две даты легко, если нет времени компонент участие!
Предположим, что у нас есть следующая таблица «Orders»:
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
2 | Camembert Pierrot | 2008-11-09 |
3 | Mozzarella di Giovanni | 2008-11-11 |
4 | Mascarpone Fabioli | 2008-10-29 |
Теперь мы хотим выбрать записи с OrderDate «2008-11-11» из таблицы выше.
Мы используем следующую инструкцию SELECT:
SELECT * FROM Orders WHERE OrderDate=’2008-11-11′
Результирующий набор будет выглядеть так:
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
3 | Mozzarella di Giovanni | 2008-11-11 |
Теперь предположим, что таблица «Orders» выглядит так (Обратите внимание на компонент Time в столбце «OrderDate»):
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 13:23:44 |
2 | Camembert Pierrot | 2008-11-09 15:45:21 |
3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
Если мы используем ту же инструкцию SELECT, как указано выше:
SELECT * FROM Orders WHERE OrderDate=’2008-11-11′
Мы не получим результата! Это происходит потому, что запрос ищет только даты без временной части.
Совет: Чтобы ваши запросы были простыми и простыми в обслуживании, не допускайте временных компонентов в ваших датах!
❮ Назад Дальше ❯
PHP\CSS\JS\HMTL Editor
Copyright 2018-2020 HTML5CSS.ru
Правила и Условия Политика конфиденциальности О нас Контакты
Функция MySQL DATE_FORMAT: Форматирование дат в MySQL
Резюме : в этом руководстве вы узнаете, как использовать функцию MySQL DATE_FORMAT для форматирования значения даты на основе определенного формата.
Введение в MySQL
Функция DATE_FORMAT
Чтобы отформатировать значение даты в определенном формате, вы используете функцию DATE_FORMAT
. Синтаксис функции DATE_FORMAT
следующий:
DATE_FORMAT(дата,формат) Язык кода: SQL (язык структурированных запросов) (sql)
Функция DATE_FORMAT
принимает два аргумента:
-
date
: допустимое значение даты, которое вы хотите отформатировать - :
0 формат строка формата, состоящая из предопределенных спецификаторов. Каждому спецификатору предшествует символ процента (
%
). В таблице ниже приведен список предопределенных спецификаторов.
Функция DATE_FORMAT
возвращает строку, набор символов и порядок сортировки которой зависят от настроек подключения клиента.
Следующая таблица иллюстрирует спецификаторы и их значения, которые вы можете использовать для построения строки формата даты:
Specifier | , вторник, среда и т. д. | |
---|---|---|
%b | Сокращенное название месяца, состоящее из трех символов, например, январь, февраль, март и т. д. | |
%c | Месяц в числовом формате, например, 2, 3, 1… 12 | |
%D | День месяца с английским суффиксом, например, 0, 1, 2 и т. д. , 02,… 31 | |
%E | День месяца без ведущего нуля, например, 1,2,… 31 | |
%F | MICRESECONDS в диапазоне 000000..999999956 | |
Час в 24-часовом формате с нулем в начале например, 00..23 | ||
%H | час в 12-часовом формате с ведущим нолью, например, 01, 02… 12 | |
%I | , так же, как h | |
%I | -intomting с Z | . 00, 01,…59|
%j | День года с нулем в начале например, 001,002,…366 | |
%k | Час в 24-часовом формате, без нуля в начале e.g. …23 | |
%l | Час в 12-часовом формате без нуля в начале например, 1,2…12 | |
%M | Наименование полного месяца, например, январь, февраль,… декабрь | |
%M | Месяц с названием с ведущим нолью, например, P | 9595959595959595959595959559559559595959595959595959595595959559559595955955955955955955955959559559559559559559559559559559559559559559559559595595955955955955955955955955955955955955. AM или PM, в зависимости от других спецификаторов времени |
%r | Время в 12-часовом формате чч:мм:сс AM или PM | |
%S | Секунды с начальным нулем 00,90,…56 | |
%s | То же, что и %S | |
%T | Время в 24-часовом формате чч:мм:сс | |
%U | Номер недели с нулем в начале, если первым днем недели является воскресенье, например, 00,01,02…53 | |
%u | Номер недели с нулем в начале, если первым днем недели является понедельник, например, 00,01,02…53 | |
%V | То же, что и %U; используется с %X | |
%v | То же, что и %u; используется с %x | |
%W | Полное название дня недели, например, воскресенье, понедельник,…, суббота | |
%w | День недели в цифрах (0=воскресенье, 1=понедельник и т. д.) | |
%X | Год недели в четыре цифры, где первый день недели — воскресенье; часто используется с %V | |
%x | Год недели, где первый день недели — понедельник, четыре цифры; используется с %v | |
%Y | Год из четырех цифр, например, 2000 и 2001. | |
%y | Год из двух цифр, например, 10,11 и 12. | |
%% | Добавить символ процента (%) к выходным данным |
DATE_FORMAT String | Форматированная дата |
---|---|
%y-%M-%D | 2013-07-04 |
5%C/y | |
5%C/y | |
5%C/y | |
5%C/ | 555%C/ | %C/. /2013 |
%c/%e/%Y | 7/4/2013 |
%D/%M/%Y | 4/7/2013 |
%M/%D/%Y | 7/4/2013 |
%E /%c/%Y %H:%i | 07. 04.2013 11:20 |
%c/%e/%Y %H:%i | 04.07.2013 11:20 |
%d/%m/%Y %H:%i | 07.04.2013 11:20 |
%m/%d/%Y %H:%i | 4.07.2013 11 :20 |
%e/%c/%Y %T | 07.04.2013 11:20 |
%c/%e/%Y %T | 04.07.2013 11:20 |
%d/%m/%Y %T | 07.04.2013 11:20 |
%m/%d/%Y 5 6T 9005 050 6T | 07.04.2013 04.07.2013 11:20 |
%a %D %b %Y | Чт 4 июля 2013 |
%a %D %b %Y %H:%i | 1 июл | 1 10 3 9005 : 20
%A %D %B %y %T | Чт 4 -й июль 2013 г. 11:20:05 |
%A %B %E %Y | THU JUL 4 2013 |
Thu Jul 4 2013 11:20 | |
%A %B %E %y %T | Thu Jul 4 2013 11:20:05 |
%W %D %y | четверг 4 -й. Июль 2013 г. 20:05 |
%l:%i %p %b %e, %Y | 04. 07.2013 11:20 |
%M %e, %Y | |
%A, %D %B %y %T | THU, 04 июля 2013 г. 11:20:05 |
MySQL
Date_format
Примерыобразец базы данных.
Для выбора данных заказа и форматирования значения даты используется следующий оператор:
SELECT номер заказа, DATE_FORMAT(дата заказа, '%Y-%m-%d') Дата заказа, DATE_FORMAT(требуемая дата, '%a %D %b %Y') требуемая дата, DATE_FORMAT(отгруженнаядата, '%W %D %M %Y') отгруженнаядата ОТ заказы;Язык кода: SQL (язык структурированных запросов) (sql)
Попробуйте
Мы отформатировали дату заказа, требуемую дату и дату отгрузки каждого заказа на основе различных форматов даты, указанных в строках формата.
MySQL
DATE_FORMAT
с ORDER BY
См. следующий пример:
SELECT номер заказа, DATE_FORMAT(дата отгрузки, '%W %D %M %Y') дата отгрузки ОТ заказы ГДЕ дата отправки НЕ НУЛЕВАЯ ЗАКАЗАТЬ ПО дате отгрузки; Язык кода: SQL (язык структурированных запросов) (sql)
Попробуйте
В запросе мы выбрали все заказы, дата отгрузки которых не равна NULL
, и отсортировали заказы по дате отгрузки. Однако заказы были отсортированы неправильно.
Причина в том, что мы использовали shipdate
в качестве псевдонима для вывода функции DATE_FORMAT
, которая является строкой, предложение ORDER BY взяло псевдоним и отсортировало заказы на основе строковых значений, а не значений даты.
Чтобы решить эту проблему, мы должны использовать псевдоним, отличный от имени столбца; см. следующий оператор:
SELECT номер заказа, DATE_FORMAT(дата отгрузки, '%W %D %M %Y') 'Дата отгрузки' ОТ заказы ГДЕ дата отправки НЕ НУЛЕВАЯ ЗАКАЗАТЬ ПО дате отгрузки; Язык кода: SQL (язык структурированных запросов) (sql)
Попробуйте
В этом руководстве мы показали, как использовать функцию MySQL DATE_FORMAT
для форматирования даты на основе указанного формата.
Было ли это руководство полезным?
запрос mysql — дата формата на выходе?
спросил
Изменено 10 лет, 2 месяца назад
Просмотрено 35 тысяч раз
В моей таблице даты хранятся так: 2011-03-03T13:30:00
Я пытаюсь вывести даты так: 3 марта 2011 г. 13:30
Я бы скорее включил его в запрос, чем использовал php для его форматирования, но у меня возникли некоторые трудности с этим. Попытка различных итераций DATE_FORMAT, но это не дает мне того, что я хочу, может быть, из-за того, как он хранится?
- mysql
- формат даты
2
В основном у вас есть две разные операции, которые вам могут понадобиться при обработке дат: дата в строку и наоборот. Вы можете использовать следующие функции: DATE_FORMAT()
и STR_TO_DATE()
. Полную ссылку можно найти в руководстве.
Пример использования:
ВЫБЕРИТЕ DATE_FORMAT(CURRENT_TIMESTAMP, '%d/%m/%Y %H:%i:%s'), STR_TO_DATE('31/12/2001 23:55:00', '%d/%m/%Y %H:%i:%s')
Если ваши даты не настоящие даты, а строки, вам нужно дважды преобразовать : из строки в дату и снова из даты в строку:
SELECT STR_TO_DATE('2011-03-03T13:30:00', '%Y-%m-%dT%H:%i:%s'), DATE_FORMAT(STR_TO_DATE('2011-03-03T13:30:00', '%Y-%m-%dT%H:%i:%s'), '%M %e, %Y %l:%i % п')
Использовать DATE_FORMAT
:
DATE_FORMAT(дата, "%M %e, %Y %h:%i %p")
Формат хранения даты MySQL на самом деле ГГГГ-ММ-ДД, но с помощью функций str_to_date() и date_format() вы можете принимать и генерировать любой требуемый формат даты.