MySQL Date Functions
В следующей таблице приведены наиболее важные функций для работы с датами в MySQL:
| Функции | Описание |
|---|---|
| NOW() | Возвращает текущую дату и время. |
| CURDATE() | Возвращает текущую дату. |
| CURTIME() | Возвращаем текущее время. |
| DATE() | Состоит из двух частей даты и времени. |
| EXTRACT() | Возвращает одно значения даты/времени. |
| DATE_ADD() | Добавляет до выборки указанное число дней/мину/часов и т.д. |
| DATE_SUB() | Вычитываем указанный интервал от даты. |
| DATEDIFF() | Возвращает значение времени между двумя датами. |
| DATE_FORMAT() | Функция для различного вывода информации о времени. |
SQL Server Date Functions
В следующей таблице приведены наиболее важные функций для работы с датами в SQL Server:
| Функции | Описание |
|---|---|
| GETDATE() | Возвращает текущую дату и время. |
| DATEPART() | Возвращает дату/время. |
| DATEADD() | Функция, которая позволяет добавлять определенное значение для даты. |
| DATEDIFF() | Вычисляем разницу между датами. |
| CONVERT() | Функция для различного вывода информации о времени. |
Типы данных в SQL
MySQL предоставляет следующие форматы данных для хранения даты / времени в базе данных:
- DATE - format YYYY-MM-DD
- DATETIME - format: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - format: YYYY-MM-DD HH:MM:SS
- YEAR - format YYYY or YY
SQL Server предоставляет следующие форматы данных для хранения даты / времени в базе данных:
- DATE - format YYYY-MM-DD
- DATETIME - format: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - format: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - format: a unique number
Для обзора всех имеющихся типов данных, перейдите на страницу Типы данных.
Работа с Датами в SQL
Есть следующая таблица "Orders":
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 |
| 2 | Camembert Pierrot | 2008-11-09 |
| 3 | Mozzarella di Giovanni | 2008-11-11 |
| 4 | Mascarpone Fabioli | 2008-10-29 |
Теперь мы хотим, выбрать все записи, где OrderDate равняется "2008-11-11".
Для этого используем такой запрос:
Результат запроса:
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 |
| 3 | Mozzarella di Giovanni | 2008-11-11 |
Теперь предположим, что таблица "Orders" выглядит следующим образом:
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 13:23:44 |
| 2 | Camembert Pierrot | 2008-11-09 15:45:21 |
| 3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
| 4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
Если мы используем тот же SELECT запрос, то:
мы не получим результат! Это объясняется тем, что запрос ищет только по датам, но не учитывает время.
SQL Dates





Комментарии
Вот как раз мой случай. Ищу как сделать запрос за день. Варианты решения конечно есть. Я новичок в SQL, но предполагаю что можно сделать красивей чем состряпал я используя BETWEEN с диапазоном дата и дата+1 Цитировать
В таблице колонка даты имеет формат DATETIME.
Нужно выбрать записи за конкретный день или несколько дней.
Пока делаю так:
WHERE Datex BETWEEN #" & Format(Дата_нач ало, "YYYY-MM-DD") & " 00:00:00" & "# AND #" & Format(Дата_кон ец, "YYYY-MM-DD") & " 23:59:59#"
Синтаксис VBA. Из примера видно, что прилепляю время начала и конца дня. Также приходится делать даже если надо выбрать только за один день.
Чтобы выбрать за один день еще можно использовать два условия Datex >= моя_Дата AND Datex < моя_Дата + 1 день. Ключевое слово меньше (а не меньше равно), чтобы не попали даты следующего дня с нулевым временем. Но это выглядит тоже не очень.
Может кто предложит что поинтересней? Скорость обработки запроса тоже очень важна. Цитировать