Главная SQL Dates
E-mail Печать PDF

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":

OrderIdProductNameOrderDate
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".

Для этого используем такой запрос:

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

Результат запроса:

OrderIdProductNameOrderDate
1 Geitost 2008-11-11
3 Mozzarella di Giovanni 2008-11-11

Теперь предположим, что таблица "Orders" выглядит следующим образом:

OrderIdProductNameOrderDate
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 запрос, то:

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

мы не получим результат! Это объясняется тем, что запрос ищет только по датам, но не учитывает время.

Комментарии

 
+1 #1 Сергей 2012-03-26 10:16 "мы не получим результат! Это объясняется тем, что запрос ищет только по датам, но не учитывает время."
Вот как раз мой случай. Ищу как сделать запрос за день. Варианты решения конечно есть. Я новичок в SQL, но предполагаю что можно сделать красивей чем состряпал я используя BETWEEN с диапазоном дата и дата+1
Цитировать
 
 
0 #2 Сергей 2012-03-27 18:58 Немного подробней:
В таблице колонка даты имеет формат DATETIME.
Нужно выбрать записи за конкретный день или несколько дней.
Пока делаю так:
WHERE Datex BETWEEN #" & Format(Дата_нач ало, "YYYY-MM-DD") & " 00:00:00" & "# AND #" & Format(Дата_кон ец, "YYYY-MM-DD") & " 23:59:59#"
Синтаксис VBA. Из примера видно, что прилепляю время начала и конца дня. Также приходится делать даже если надо выбрать только за один день.

Чтобы выбрать за один день еще можно использовать два условия Datex >= моя_Дата AND Datex < моя_Дата + 1 день. Ключевое слово меньше (а не меньше равно), чтобы не попали даты следующего дня с нулевым временем. Но это выглядит тоже не очень.

Может кто предложит что поинтересней? Скорость обработки запроса тоже очень важна.
Цитировать
 

Авторизация

Nice Ajax Poll

Какое из моих расширений самое лучшее?

Статистика



Реклама