Опубликован: 16.01.2007 | Уровень: для всех | Доступ: свободно
Лекция 9:
Работа с датой и временем
Текущие даты
Ранее мы видели, что текущую дату, месяц и год можно вывести с помощью аргумента CURRENT_DATE предложений DAYOFMONTH(), MONTH() и YEAR(), соответственно. То же самое можно использовать для выборки данных из таблиц.
select e_id, birth_date from employee_per where MONTH(birth_date) = MONTH(CURRENT_DATE);
Результат запроса представлен на рис. 9.11.
Задания
- Вывести идентификаторы, даты рождения и адреса e-mail сотрудников, родившихся в апреле.
- Вывести идентификаторы, даты рождения и имена супругов сотрудников, родившихся в 1968 г., и отсортируйте записи на основе имен их супругов.
- Выведите идентификаторы сотрудников, родившихся в текущем месяце.
- Сколько в базе данных имеется уникальных годов рождения?
- Вывести список уникальных годов рождения и число сотрудников, родившихся в каждом таком году.
- Сколько сотрудников родились в каждом месяце? Выдача должна содержать названия месяцев (не номера), и записи должны быть упорядочены по убыванию по месяцам, начиная от наибольшего номера.
Возможные решения
-
mysql> select e_id, birth_date, p_email -> from employee_per -> where month(birth_date) = 4;
Результат запроса представлен на рис. 9.12.
или
mysql> select e_id, birth_date, p_email -> from employee_per -> where MONTHNAME(birth_date) = 'April';
Результат аналогичен рис. 9.12.
-
mysql> select e_id, birth_date, s_name -> from employee_per where -> YEAR(birth_date) = 1968 -> ORDER BY s_name;
Результат запроса представлен на рис. 9.13.
Примечание: Значение NULL показано в самом верху. Более подробно значение NULL будет рассмотрено ниже.
-
mysql> select e_id from employee_per -> where month(birth_date) = month(current_date);
Результат запроса представлен на рис. 9.14.
-
mysql> select distinct year(birth_date) from employee_per;
Результат запроса представлен на рис. 9.15.
-
mysql> select year(birth_date) as Year, -> count(*) from employee_per -> GROUP BY Year;
Результат запроса представлен на рис. 9.16.
-
mysql> select MONTHNAME(birth_date) AS Month, -> count(*) AS Number -> from employee_per -> GROUP BY Month -> ORDER BY Number DESC;
Результат запроса представлен на рис. 9.17.