loading..
Русский    English
17:10
листать

Функция DATEADD стр. 2

На примере задачи 7.1.1 рассмотрим добавление интервала к дате для других СУБД.

MySQL

MySQL имеет похожую функцию с непохожими аргументами. Вот синтаксис этой функции:

  1. DATE_ADD(date, INTERVAL value addunit)

Здесь

date - дата, к которой прибавляется интервал;

value - величина интервала;

addunit - тип интервала.

Допустимы следующие типы интервалов, имена которых говорят сами за себя:

MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

Решение нашей задачи для MySQL примет вид:

  1. SELECT DATE_ADD((SELECT MAX(date) FROM pass_in_trip),
  2.              interval 7 day) next_wd;

next_wd
2005-12-06 00:00:00

Чтобы добавить интервал, представляющий собой несколько компонентов времени, используется подстрока из стандартного представления даты/времени. Так, например, чтобы добавить к '2018-01-27T13:00:00' один день и 3 часа, можно написать:

  1. SELECT DATE_ADD('2018-01-27T13:00:00' , interval '1T3'  DAY_HOUR);

2018-01-28 16:00:00

Добавление 1 дня и 15 секунд будет выглядеть так:

  1. SELECT DATE_ADD('2018-01-27T13:00:00', interval '01T00:00:15'  DAY_SECOND);

2018-01-28 13:00:15

PostgreSQL и Oracle

Эти СУБД не используют функцию. Для добавления интервала применяется обычный оператор сложения "+":

  1. SELECT MAX("date") + interval '7' day next_wd
  2. FROM pass_in_trip;

Обратите внимание, что величина интервала должна иметь символьный тип данных.

Добавить 1 день и 3 часа

PostgreSQL

У PostgreSQL нет составных интервалов, поэтому можно либо выразить величину интервала в терминах меньшего интервала

  1. SELECT timestamp'2018-01-27T13:00:00' + interval '27'  hour;
либо добавить два интервала

  1. SELECT timestamp'2018-01-27T13:00:00' + interval '3' hour + interval '1' day;

Аналогично можно поступить для добавления одного дня и 15 секунд, например:

  1. SELECT timestamp'2018-01-27T13:00:00' + interval '15' second + interval '1' day;

Oracle

Oracle позволяет использовать составные интервалы, например, 1 день и 3 часа:

  1. SELECT timestamp'2018-01-27 13:00:00' + interval '01 03'  DAY TO HOUR FROM dual;
и 1 день 15 секунд

  1. SELECT timestamp'2018-01-27 13:00:00' + interval '01 00:00:15'  DAY TO SECOND FROM dual;

Разумеется, можно также прибавить два простых интервала, как и в случае PostgreSQL.

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