SQL Урок 10. Работа с временем

SQL   2 апреля 2012  Автор статьи:  

В данном уроке мы познакомимся как работать с датой и временем, посмотрим какие функции и типы данных позволят эффективно управляться с ними.Самой популярным типом для работы со временем является datetime. Рассмотрим какие функции нужны для работы с ним. Для того, чтобы изменить значение даты нужно использовать функцию DATEADD

DATEADD(единица_измерения_времени, количество_единиц, время)

Эта функция возвращает datetime, который равен время + количество_единиц * единица_измерения_времени. Приведем список единиц измерения времени:

  • Year — год
  • Quartet — квартал
  • Month — месяц
  • Day — день
  • Week — неделя
  • Hour — час
  • Second — секунда
  • Millisecond — миллисекунда

Для того чтобы получить текущую дату можно использовать CURRENT_TIMESTAMP. Таким образом для того, чтобы увеличить текущую дату на 14 дней необходимо написать:

DATEADD(DAY, 14, CURRENT_TIMESTAMP)

Аналогичный запрос:

DATEADD(WEEK, 2, CURRENT_TIMESTAMP)

Для того, чтобы узнать, какое количество времени пройдет между двумя датами можно использовать функцию DATEDIFF:

DATEDIFF (единица_измерения_времени , начальная_дата , конечная_дата)

Данная функция вернет временной интервал в указанной вами единицах измерения.
Для того, чтобы узнать сколько времени прошло с момента написания этой статьи до сегодняшнего дня в днях нужно применить следующий SQL — запрос:

DATEDIFF (DAY , CONVERT(datetime,'20120402'), CURRENT_TIMESTAMP)

Для того, чтобы получить какую — нибудь часть от времени можно применить функцию DATEPART.

DATEPART ( единица_измерения_времени , время )

Данная функция возвращает целое число, которое отвечает на вопрос «сколько?» относительно указанной в операторе даты. Допустим для того, чтобы узнать сколько сейчас часов надо использовать следующую конструкцию:

DATEPART ( HOUR , CURRENT_TIMESTAMP)

Данная функция позволяет получить только численно указанные значения у даты, а если мы хотим получить строковое представление, то нам необходимо использовать :

DATENAME ( единица_измерения_времени , время )

Таким образом для того, чтобы получить сегодняшнюю дату в строковом представлении:

SELECT
DATENAME ( day , CURRENT_TIMESTAMP )+' '+
DATENAME ( month , CURRENT_TIMESTAMP )+' '+
DATENAME ( year , CURRENT_TIMESTAMP' )

Данный запрос вернет что — то похожее на «2 April 2012».

Научиться программировать

  • на Delphi

  • на Java

  • на C++