Функция DATE 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 Date
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 | computer | 2008-12-26 |
2 | printer | 2008-12-26 |
3 | electrograph | 2008-11-12 |
4 | telephone | 2008-10-19 |
Теперь мы хотим выбрать записи из таблицы, где OrderDate равен "2008-12-26".
Мы используем следующий SELECT-запрос:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
Результаты набора данных:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
3 | electrograph | 2008-12-26 |
Теперь предположим, что "Orders" выглядит так (обратите внимание на часть времени в столбце "OrderDate"):
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 16:23:55 |
2 | printer | 2008-12-26 10:45:26 |
3 | electrograph | 2008-11-12 14:12:08 |
4 | telephone | 2008-10-19 12:56:10 |
Если мы используем следующий SELECT-запрос:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
В этом случае мы не получим результатов. Это связано с тем, что дата в данном запросе не содержит части времени.
Подсказка:Если вы хотите сделать запрос простым и более легким в обслуживании, не используйте часть времени в дате!