Функции датыSQL


Даты SQL

NoteПри работе с датами, вероятно, самая сложная задача — убедиться, что формат вставляемой даты соответствует формату столбца даты в базе данных.

Пока ваши данные содержат только часть даты, выполнение запросов не составит проблемы. Однако если задействована часть времени, ситуация несколько сложнее.

Прежде чем обсуждать сложность запросов по датам, давайте сначала рассмотрим наиболее важные встроенные функции обработки дат.


Функции даты 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

NoteЕсли время не учитывается, мы можем легко сравнить две даты!

Предположим, у нас есть следующая таблица "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:

SELECT * FROM Orders WHERE OrderDate='2008-11-11'

Набор результатов показан ниже:

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.

Совет:Если вы хотите, чтобы запросы оставались простыми и их было легче поддерживать, не используйте временную часть в датах!


Другие расширения