Функции датыSQL
Даты SQL
При работе с датами, вероятно, самая сложная задача — убедиться, что формат вставляемой даты соответствует формату столбца даты в базе данных.
Пока ваши данные содержат только часть даты, выполнение запросов не составит проблемы. Однако если задействована часть времени, ситуация несколько сложнее.
Прежде чем обсуждать сложность запросов по датам, давайте сначала рассмотрим наиболее важные встроенные функции обработки дат.
Функции даты MySQL
В следующей таблице перечислены наиболее важные встроенные функции даты в MySQL:
| Функция | Описание |
|---|---|
| NOW() | Возвращает текущую дату и время |
| CURDATE() | Возвращает текущую дату |
| CURTIME() | Возвращает текущее время |
| DATE() | Извлекает часть даты из выражения даты или даты/времени |
| EXTRACT() | Возвращает отдельную часть даты/времени |
| DATE_ADD() | Добавляет указанный интервал времени к дате |
| DATE_SUB() | Вычитает указанный интервал времени из даты |
| DATEDIFF() | Возвращает количество дней между двумя датами |
| DATE_FORMAT() | Отображает дату/время в различных форматах |
Функции даты SQL Server
В следующей таблице перечислены наиболее важные встроенные функции для работы с датами в SQL Server:
| Функция | Описание |
|---|---|
| GETDATE() | Возвращает текущую дату и время |
| DATEPART() | Возвращает отдельную часть даты/времени |
| DATEADD() | Добавляет или вычитает указанный интервал времени из даты |
| DATEDIFF() | Возвращает время между двумя датами |
| CONVERT() | Отображает дату/время в различных форматах |
Типы данных даты в SQL
MySQLХраните значения даты или даты/времени в базе данных, используя следующие типы данных:
- DATE - Формат: YYYY-MM-DD
- DATETIME - Формат: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - Формат: YYYY-MM-DD HH:MM:SS
- YEAR - Формат: YYYY или YY
SQL ServerХраните значения даты или даты/времени в базе данных, используя следующие типы данных:
- DATE - Формат: YYYY-MM-DD
- DATETIME - Формат: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - Формат: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - Формат: Уникальное число
Примечание:При создании новой таблицы в базе данных необходимо выбрать тип данных для столбцов!
Для всех доступных типов данных посетите наше полноесправочное руководство по типам данных。
Обработка дат в SQL
Если время не учитывается, мы можем легко сравнить две даты!
Предположим, у нас есть следующая таблица "Orders":
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Гейтост | 2008-11-11 |
| 2 | Камамбер Пьерро | 2008-11-09 |
| 3 | Моцарелла ди Джованни | 2008-11-11 |
| 4 | Маскарпоне Фабиоли | 2008-10-29 |
Теперь мы хотим выбрать запись с OrderDate "2008-11-11" из таблицы выше.
Мы используем следующую инструкцию SELECT:
Набор результатов показан ниже:
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Гейтост | 2008-11-11 |
| 3 | Моцарелла ди Джованни | 2008-11-11 |
Теперь предположим, что таблица "Orders" выглядит так (обратите внимание на часть времени в столбце "OrderDate"):
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Гейтост | 2008-11-11 13:23:44 |
| 2 | Камамбер Пьерро | 2008-11-09 15:45:21 |
| 3 | Моцарелла ди Джованни | 2008-11-11 11:12:01 |
| 4 | Маскарпоне Фабиоли | 2008-10-29 14:56:59 |
Если мы используем тот же оператор SELECT, что и выше:
SELECT * FROM Orders WHERE OrderDate='2008-11-11' или SELECT * FROM Orders WHERE OrderDate='2008-11-11 00:00:00'
Тогда мы не получим никаких результатов! Потому что в таблице нет даты "2008-11-11 00:00:00". Без части времени время по умолчанию — 00:00:00.
Совет:Если вы хотите, чтобы запросы оставались простыми и их было легче поддерживать, не используйте временную часть в датах!
Другие расширения