3.1 Списък с функции за работа с дата и час

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

# функция Описание
1 CURDATE() Връща текущата дата
2 CURTIME() Връща текущото време
3 NOW(), LOCALTIME() Връща текущата дата и текущия час
4 ГОДИНА() Връща година от датата
5 МЕСЕЦ() Връща месеца от дата
6 DAY(), DAYOFMONTH() Връща деня от дата
7 ЧАС() Връща само часове след време
8 МИНУТА() Обявява minutesи от час
9 ВТОРИ() Връща секунди след време
10 DAYNAME() Връща името на деня от седмицата: понеделник, ...
единадесет MONTHNAME() Връща името на месеца: януари, ...
12 СЕДМИЦА() Връща седмицата от дата
13 ДЕЛНИК() Връща номера на деня от седмицата: понеделник - 0, вторник - 1
14 WEEKOFYEAR() Връща номера на седмицата от годината
15 ДЕН НА СЕДМИЦАТА() Връща номера на деня от седмицата: неделя - 1, понеделник - 2
16 DAYOFYEAR() Връща деня от годината: 1-366
17 ДАТА() Връща само датата от обект "datetime".
18 ADDDATE() Добавя дни към дата
19 ПОДДАТА() Изважда дни от дата
20 ADDTIME() Добавя време към време
21 SUBTIME() Изважда времето от времето

Умишлено групирах функциите в малки групи, за да улесня разбирането How се работи с тях. По-долу ще разгледаме по една функция от всяка група.

Можете да намерите пълен списък с функции за работа с дата и час на връзката: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html

3.2 Функции за повикване

Между другото, тъй като учим толкова много функции, мисля, че е полезно да споменем, че операторът SELECTне трябва да се използва с FROM. Може да върне стойността на всеки израз. Общият изглед на който е даден от шаблона:

SELECT expression

И ако искате да извикате няHowва функция, тогава трябва да напишете code като:

SELECT function(options)

По-долу ще дам няколко примера за работата на оператора SELECTбез прибягване до таблици:

# Заявка Резултат
1 ИЗБЕРЕТЕ 1+1 2
2 ИЗБЕРЕТЕ 13 MOD 5 3
3 ИЗБЕРЕТЕ RAND() 0,20771444235715497
4 ИЗБЕРЕТЕ CURDATE() 2022-06-04
5 ИЗБЕРЕТЕ CURTIME() 00:06:02
6 ИЗБЕРЕТЕ СЕГА() 2022-06-04 00:06:43

И Howто можете да видите, в tableта по-горе, за да получите текущата дата и час, просто трябва да използвате една от функциите:

  • CURDATE()- текуща дата;
  • CURTIME()- текущо време;
  • NOW()– текуща дата и час.

3.3 Групиране на данните по година и месец

Нека си припомним нашата table със задачи със задачи за служители. Нека се опитаме да групираме задачите от тази table по години. За да направим това, използваме функцията YEAR(), която връща годината от датата, подадена към нея.

Първата version на нашата заявка ще изглежда така:

SELECT
    id,
    employee_id ,
    name,
    YEAR(deadline) AS year,
    deadline
FROM task

Резултатът от тази заявка ще бъде:

document за самоличност ИД на служител име година краен срок
1 1 Коригиране на грешка във фронтенда 2022 г 2022-06-01
2 2 Коригиране на грешка в бекенда 2022 г 2022-06-15
3 5 Купи кафе 2022 г 2022-07-01
4 5 Купи кафе 2022 г 2022-08-01
5 5 Купи кафе 2022 г 2022-09-01
6 (НУЛА) Почистете офиса (НУЛА) (НУЛА)
7 4 Наслаждавай се на живота (НУЛА) (НУЛА)
8 6 Наслаждавай се на живота (НУЛА) (НУЛА)

Виждаме, че всички редове имат една и съща година, така че нека използваме две полета - година и месец. Втората version на нашата заявка ще изглежда така:

SELECT
    id,
    employee_id ,
    name,
    YEAR(deadline) AS year,
    MONTH(deadline) AS month,
    deadline
FROM task

Резултатът от тази заявка ще бъде:

document за самоличност ИД на служител име година месец краен срок
1 1 Коригиране на грешка във фронтенда 2022 г 6 2022-06-01
2 2 Коригиране на грешка в бекенда 2022 г 6 2022-06-15
3 5 Купи кафе 2022 г 7 2022-07-01
4 5 Купи кафе 2022 г 8 2022-08-01
5 5 Купи кафе 2022 г 9 2022-09-01
6 (НУЛА) Почистете офиса (НУЛА) (НУЛА) (НУЛА)
7 4 Наслаждавай се на живота (НУЛА) (НУЛА) (НУЛА)
8 6 Наслаждавай се на живота (НУЛА) (НУЛА) (НУЛА)

Няма да ви казвам How да групирате задачи по година и месец - вече сте учor това: използвайте оператора GROUP BY.