Работа с датой и временем в 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, так как предполагается, что нам необходимо записывать точное время и дату осуществления заказа.

Точное время доставки, как правило неизвестно, поэтому колонка order_delivery имеет тип DATE, необходимый для фиксации даты доставки.

Формат даты и времени может быть следующий:

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)
  • FROM_UNIXTIME()
    — Форматирует дату, представленную типом UNIX timestamp
  • HOUR() — Извлекает часы
  • NOW() — Возвращает текущую дату и время

Вот такие развитые средства содержит MySQL для работы с датой и временем.

  • Создано 28.03.2019 11:49:34
  • Михаил Русаков

Предыдущая статьяСледующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:
    <a href=»https://myrusakov.
    ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>

    Она выглядит вот так:

  2. Текстовая ссылка:
    <a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. 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»:

OrderIdProductNameOrderDate
1Geitost2008-11-11
2Camembert Pierrot2008-11-09
3Mozzarella di Giovanni2008-11-11
4Mascarpone Fabioli2008-10-29

Теперь мы хотим выбрать записи с OrderDate «2008-11-11» из таблицы выше.

Мы используем следующую инструкцию SELECT:

SELECT * FROM Orders WHERE OrderDate=’2008-11-11′

Результирующий набор будет выглядеть так:

OrderIdProductNameOrderDate
1Geitost2008-11-11
3Mozzarella di Giovanni2008-11-11

Теперь предположим, что таблица «Orders» выглядит так (Обратите внимание на компонент Time в столбце «OrderDate»):

OrderIdProductNameOrderDate
1Geitost2008-11-11 13:23:44
2Camembert Pierrot2008-11-09 15:45:21
3Mozzarella di Giovanni2008-11-11 11:12:01
4Mascarpone Fabioli2008-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 возвращает строку, набор символов и порядок сортировки которой зависят от настроек подключения клиента.

Следующая таблица иллюстрирует спецификаторы и их значения, которые вы можете использовать для построения строки формата даты:

% % % % % % % % % % % % % % % % % % % % % % % %9005 % % %9005 % % %9005 %. H. 00, 01,…597 :

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
%j День года с нулем в начале например, 001,002,…366
%k Час в 24-часовом формате, без нуля в начале e.g. …23
%l Час в 12-часовом формате без нуля в начале например, 1,2…12
%M Наименование полного месяца, например, январь, февраль,… декабрь
%M Месяц с названием с ведущим нолью, например, P9595959595959595959595959559559559595959595959595959595595959559559595955955955955955955955959559559559559559559559559559559559559559559559559595595955955955955955955955955955955955955. 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.
%% Добавить символ процента (%) к выходным данным
1 10 3 9005 : 209555 %. а %b %e %Y %H:%i 39.07.2013
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 июл
%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() вы можете принимать и генерировать любой требуемый формат даты.