Работа с дата и час в MySQL, MySQL, Бази данни, статии по

В тази статия ще разгледаме основите на работа с дати и часове в MySQL.

Формат на датата и часа

Форматът за дата MySQL поддържа няколко формата за дата и час. Те могат да бъдат определени, както следва:

ДАТА - Съхранява стойност на датата като ГГГГ-ММ-ДД. Например 2008-10-23. DATETIME - съхранява стойност за дата и час като ГГГГ-ММ-ДД ЧЧ:ММ:СС. Например 2008-10-23 10:37:22. Поддържан диапазон от дата и час: 1000-01-01 00:00:00 до 9999-12-31 23:59:59 TIMESTAMP - подобно на DATETIME с някои разлики в зависимост от версията на MySQL и режима, в който сървърът работи.

Създаване на полета за дата и час

Таблица, съдържаща типове данни DATE и DATETIME, се създава по същия начин като другите колони. Например, можем да създадем нова таблица, наречена поръчки, която съдържа колони за номер на поръчка, поръчан артикул, дата на поръчка и дата на доставка на поръчката:

Колоната ORDER_DATE е MySQL поле от тип DATE TIME, в което записваме датата и часа, когато е направена поръчката. За датата на доставка е невъзможно да се предвиди точното време, затова записваме само датата.

Формати за дата и час

Най-често използваният разделител за дати е тире (-), а за пъти двоеточие (:). Но можем да използваме произволен знак или изобщо да не добавяме никакъв знак.

Например, всички от следните формати са валидни:

Функции за дата и час

MySQL съдържа много функции, които се използват за обработка на дати и часове. Таблицата по-долу предоставя списък с най-често използваните функции:

ФункцияОписание
ADDDATE()Добавя дата.
ADDTIME()Добавя време.
CONVERT_TZ()Преобразува от една часова зона в друга.
CURDATE()Връща текущата дата.
CURTIME()Връща текущото системно време.
DATE_ADD()Добавя една дата към друга.
MySQL DATE_FORMAT ()Задава посочения формат на датата.
ДАТА()Извлича частта от датата от израз за дата или дата-час.
DATEDIFF()Изважда една дата от друга.
DAYNAME()Връща деня от седмицата.
DAYOFMONTH()Връща деня от месеца (1-31).
ДЕН НА СЕДМИЦАТА()Връща индекса на деня от седмицата от аргумента.
DAYOFYEAR()Връща деня от годината (1-366).
ЕКСТРАКТИзвлича част от дата.
FROM_DAYS()Преобразува номер на ден в дата.
FROM_UNIXTIME()Указва формата на датата на UNIX.
MySQL DATE_SUB ()Изважда една дата от друга.
ЧАС()Извлича часа.
ПОСЛЕДЕН ДЕНВръща последния ден от месеца за аргумента.
MAKEDATE()Създава дата от година и ден от годината.
MAKETIME()Връща времева стойност.
МИКРОСЕКУНДА()Връща милисекундите от аргумента.
МИНУТА()Връща минутите от аргумента.
МЕСЕЦ()Връща месеца от дадената дата.
MONTHNAME()Връща името на месеца.
СЕГА()Връща текущите дата и час.
PERIOD_ADD()Добавя интервал към месец-година.
PERIOD_DIFF()Връща броя на месеците между два периода.
КРЪТ()Връща четвърт час от дадената дата като аргумент.
SEC_TO_TIME()Преобразува секундите във формат "ЧЧ:ММ:СС".
ВТОРИ()Връща втория (0-59).
MySQL STR_TO_DATE ()Преобразува низ в дата.
SUBTIME()Изважда времето.
SYSDATE()Връща времето, в което функцията е била изпълнена.
ВРЕМЕВИ ФОРМАТ()Указва формата на часа.
TIME_TO_SEC()Връща аргумента, преобразуван в секунди.
ВРЕМЕ()Избира част от времето от израза, подаден като аргумент.
TIMEDIFF()Изважда времето.
TIMESTAMP()С един аргумент тази функция връща израз за дата или дата и час. При два аргумента се връща сумата от аргументите.
TIMESTAMPADD()Добавя интервал към датата и часа.
TIMESTAMPDIFF()Изважда интервал от дата - час.
TO_DAYS()Връща аргумента за дата, преобразуван в дни.
UNIX_TIMESTAMP()Извлича UNIX datetime във формат, приет от MySQL.
UTC_DATE()Връща текущата дата според универсалното време (UTC).
UTC_TIME()Връща текущия час според универсалното време (UTC).
UTC_TIMESTAMP()Връща текущата дата-час според универсалното време (UTC).
СЕДМИЦА()Връща номера на седмицата.
ДЕЛНИК()Връща индекса на деня от седмицата.
WEEKOFYEAR()Връща календарната седмица на датата (1-53).
ГОДИНА()Връща годината.
YEARWEEK()Връща годината и седмицата.

Можете да експериментирате с тези функции за формат на дата на MySQL, без дори да поставяте никакви данни в таблицата. Например:

Можете да опитате комбинация от няколко функции в една заявка (например, за да намерите деня от седмицата): mysql> ИЗБЕРЕТЕ ИМЕ НА МЕСЕЦ(СЕГА());

Вмъкване на стойности за дата и час в колоните на таблицата

Нека да разгледаме как стойностите на датата на MySQL се въвеждат в таблица. За да демонстрираме това, ще продължим да използваме таблицата с поръчки, която създадохме в началото на статията.

Ще започнем с добавяне на нов ред за поръчка. Стойността на полето order_no ще бъде автоматично увеличена с 1, така че всичко, което трябва да направим, е да вмъкнем стойностите на order_item, датата на създаване на поръчката и датата на доставка. Датата на поръчката е времето, в което е вмъкната поръчката, така че можем да използваме функцията NOW(), за да попълним низа с текущата дата и час.

Датата на доставка е периодът от време след датата на поръчката, който можем да върнем с помощта на функцията MySQL DATE_ADD(), която приема като аргументи начална дата (в нашия случай СЕГА ()) и ИНТЕРВАЛ (в нашия случай 14 дни). Например:

Тази заявка създава поръчка за посочения артикул с дата, време за изпълнение и две седмици след това като дата на доставка:

По същия начин можете да поръчате продукт с дата на доставка след два месеца:

екстракцияданни по дата и час

По същия начин можем да използваме BETWEEN, за да изберем артикули, които ще бъдат доставени между две посочени дати. Например:

Заключение

В тази статия разгледахме форматите, използвани за определяне на дати и часове, и изброихме функциите, използвани за извършване на операции в MySQL с типа ДАТА. Както и няколко примера за въвеждане и извличане на данни.

Преводът на статията „Работа с дати и часове в MySQL“ е изготвен от приятелския екип на проекта „Изграждане на уеб сайт от А до Я“.