Работа с дата и час в 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“ е изготвен от приятелския екип на проекта „Изграждане на уеб сайт от А до Я“.