loading..
Русский    English
13:26
листать

Функция DATEADD

Функция DATEADD (datepart, number, date) возвращает значение типа datetime, которое получается добавлением к дате date количества интервалов типа datepart, равного number (целое число).

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

Допустимые значения аргумента datepart приведены ниже в таблице и взяты из электронной документации к  Cистема управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL Server — Books On Line (BOL).

Datepart Допустимые сокращения
Year — год yy, yyyy
Quarter — квартал qq, q
Month — месяц mm, m
Dayofyear — день года dy, y
Day — день dd, d
Week — неделя wk, ww
Hour — час hh
Minute — минута mi, n
Second — секунда ss, s
Millisecond - миллисекунда ms

Пусть сегодня 28.10.2005, и мы хотим узнать, какой день будет через неделю. Мы можем написать:

Консоль
Выполнить
  1. SELECT DATEADD(day, 7, current_timestamp);

а можем и так:

Консоль
Выполнить
  1. SELECT DATEADD(ww, 1, current_timestamp);

В результате получим одно и то же значение; что-то типа 2005-11-04 00:11:28.683.

Однако мы не можем в этом случае написать:

Консоль
Выполнить
  1. SELECT DATEADD(mm, 1/4, current_timestamp);

и не потому, что четверть месяца не равна в точности неделе, а потому, что дробная часть значения аргумента datepart отбрасывается, и мы получим 0 вместо одной четвертой и, как следствие, текущий день.

Кроме того, мы можем использовать вместо CURRENT_TIMESTAMP функцию  T-SQL (Transact-SQL) — процедурное расширение языка SQL, используемое для программирования на стороне сервера в Microsoft SQL Server и Sybase ASE.T-SQL GETDATE() с тем же самым эффектом. Наличие двух идентичных функций поддерживается, видимо, в ожидании последующего развития стандарта.

Пример 7.1.1

Определить, какой будет день через неделю после последнего полета.

Примечание:

В примерах данной главы используется база данных «Аэрофлот». Описание этой схемы и всех остальных схем, используемых в настоящее время на сайте для решения задач, можно найти в Примечании 1.

Консоль
Выполнить
  1. SELECT DATEADD(day, 7, (SELECT MAX(date) max_date
  2. FROM pass_in_trip
  3. )
  4. );

Применение подзапроса в качестве аргумента допустимо, так как этот подзапрос возвращает единственное значение типа datetime.

Рекомендуемые упражнения: 94

Bookmark and Share
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE Convert COUNT CROSS APPLY CTE DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INNER JOIN insert INTERSECT IS NOT NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker MAX MIN MONTH MySQL NOT Больше тэгов
Учебник обновлялся
вчера
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100