Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб-1-2-теория.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

3.2.Работа с датой и временем

Особенности типа данных Date. Функции для работы с датой.

Даты в MySQL всегда представлены с годом, за которым следует месяц и затем день месяца. Даты часто записывают в виде YYYY-MM-DD, где YYYY -- 4 цифры года, MM -- 2 цифры месяца и DD -- 2 цифры дня месяца.

Тип столбца даты позволяет выполнять несколько операций, таких как сортировка, проверка условий с помощью операторов сравнения и т.д.

Примечание: MySQL требует, чтобы даты были заключены в кавычки

Использование операторов = и !=

Поиск по дате рождения

select p_email, phone from employee_per where birth_date = '1969-12-31';

Использование операторов >= и <=

Поиск по дате рождения с использованием оператора >=

select e_id, birth_date from employee_per where birth_date >= '1970-01-01';

Определение диапазонов

select e_id, birth_date from employee_per

where birth_date BETWEEN'1969-01-01' AND '1974-01-01';

Тот же запрос можно представить без конструкции BETWEEN:

select e_id, birth_date from employee_per

where birth_date >= '1969-01-01' AND birth_date <= '1974-01-01';

Использование Date для сортировки данных

select e_id, birth_date from employee_per ORDER BY birth_date;

Выбор данных с помощью Date.

DAY(date) и DAYOFMONTH(date) функции-синонимы, возвращают из даты порядковый номер дня месяца.

SELECT DAY('2011-04-17'), DAYOFMONTH('2011-04-17');

MONTH(date) и MONTHNAME(date) обе функции возвращают значения месяца. Первая - его числовое значение (от 1 до 12), вторая - название месяца:

Примеры:

Вот как можно выбрать сотрудников, которые родились в марте.

select e_id, birth_date from employee_per where MONTH(birth_date) = 3

Можно также использовать вместо чисел названия месяцев.

select e_id, birth_date from employee_per where (birth_date) = 'January';

Будьте внимательны при использовании названий месяцев, так как они различают регистр символов. Поэтому January будет работать, а JANUARY не будет

YEAR(date) функция возвращает значение года (от 1000 до 9999).

SELECT YEAR('2011-04-17');

DAYOFYEAR(date) возвращает порядковый номер дня в году (от 1 до 366).

Пример:

Нужно выбрать сотрудников, родившихся в определенный год или в определенный день.

Поиск по году рождения

select e_id, birth_date from employee_per where year(birth_date) = 1972;

Поиск по дню рождения

select e_id, birth_date from employee_per where DAYOFMONTH(birth_date) = 20

ADDDATE(date, INTERVAL value) Функция возвращает дату date, к которой прибавлено значение value. Значение value может быть отрицательным, тогда итоговая дата уменьшится. В качестве значения value могут выступать не только дни, но и недели (WEEK), месяцы (MONTH), кварталы (QUARTER) и годы (YEAR).

Пример:

SELECT ___, ADDDATE(date_incoming, INTERVAL -1 WEEK)FROM ___WHERE__;

SUBDATE(date, INTERVAL value) функция идентична предыдущей, но производит операцию вычитания, а не сложения.

PERIOD_ADD(period, n) функция добавляет n месяцев к значению даты period. Нюанс: значение даты должно быть представлено в формате YYYYMM. Давайте к февралю 2011 (201102) прибавим 2 месяца: SELECT PERIOD_ADD(201102, 2);.

TIMEDIFF(date1, date2) вычисляет разницу в часах, минутах и секундах между двумя датами.

DATEDIFF(date1, date2) вычисляет разницу в днях между двумя датами.

PERIOD_DIFF(period1, period2) функция вычисляет разницу в месяцах между двумя датами, представленными в формате YYYYMM.

SUBTIME(date, time) функция вычитает из времени date время time:

DATE(datetime) возвращает дату, отсекая время.

Пример:

SELECT SUBTIME('2011-04-18 23:17:00', '02:15:30');

TIME(datetime) возвращает время, отсекая дату.

TO_DAYS(date) и FROM_DAYS(n) взаимообратные функции. Первая преобразует дату в количество дней, прошедших с нулевого года. Вторая, наоборот, принимает число дней, прошедших с нулевого года и преобразует их в дату:

MAKEDATE(year, n) функция принимает год и номер дня в году и преобразует их в дату:

Текущие даты

Текущую дату, месяц и год можно вывести с помощью аргумента CURRENT_DATE предложений DAYOFMONTH(), MONTH() и YEAR(),

То же можно использовать для выборки данных из таблиц

Пример:

Поиск по текущему месяцу

select e_id, birth_date from employee_per

where MONTH(birth_date) = MONTH(CURRENT_DATE);

CURDATE(), CURTIME() и NOW() Первая функция возвращает текущую дату, вторая - текущее время, а третья - текущую дату и время. Функции CURDATE() и NOW() удобно использовать для добавления в базу данных записей, использующих текущее время

Пример: SELECT CURDATE(), CURTIME(), NOW();

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]