oracle прибавить дни к дате

Арифметические операции над значениями даты/времени в PL/SQL

oracle прибавить дни к дате. Смотреть фото oracle прибавить дни к дате. Смотреть картинку oracle прибавить дни к дате. Картинка про oracle прибавить дни к дате. Фото oracle прибавить дни к дате

Основные операции над значениями даты/времени в Oracle сводятся к следующему набору:

Операции с типами TIMESTAMP и INTERVAL

С интервалами «годы/месяцы» дело обстоит сложнее. Продолжительность любого дня составляет 24 часа, или 1440 минут, или даже 86 400 секунд, но не все месяцы имеют одинаковую продолжительность в днях: 28, 29, 30 или 31 день. По этой причине простое прибавление одного месяца к дате может привести к неоднозначному результату. Допустим, вы прибавляете один месяц к последнему дню мая; что получится — последний день июня или недействительная дата 31 июня? Все зависит от того, что должны представлять интервалы.

Операции с типом DATE

Прибавление четырех часов к текущей дате и времени:

ЗначениеВыражениеПредставляет
1/241/24Один час
1/14401/24/60Одна минута
1/864001/24/60/60Одна секунда

Используйте значения из табл. 10.4, и ваш код станет более понятным. Программист, привыкший к этим трем делителям, без труда поймет, что 40/86400 означает 40 секунд. Понять, что дробь 1/21610 означает то же самое, будет намного сложнее.

Вычисление интервала между двумя значениями DATE

Интервал между двумя значениями из семейства TIMESTAMP вычисляется простым вычитанием одного значения из другого. Результат всегда относится к типу INTERVAL DAY TO SECOND. Например:

Интервалы могут быть отрицательными или положительными. Отрицательный интервал означает, что более недавняя дата вычитается из даты, находящейся в прошлом:

Знак результата задает направленность интервала. К сожалению, не существует функции абсолютного значения для интервалов — аналога функции ABS для числовых значений.

Три дня — понятно, но что такое 0.40208333333333333333333333333333333333? Даты часто усекаются перед вычитанием или же усекается полученный результат. Использование типов INTERVAL и TIMESTAMP значительно упрощает правильное усечение длинной дробной строки до часов, минут и секунд.

Функция MONTHS_BETWEEN работает по следующим правилам:

Несколько примеров использования MONTHS_BETWEEN :

Вероятно, вы заметили здесь определенную закономерность. Как уже было сказано, функция MONTHS_BETWEEN вычисляет дробный компонент количества месяцев исходя из предположения, что каждый месяц содержит 31 день. Поэтому на каждый день сверх полного месяца к результату прибавляется 1/31 месяца:

Смешанное использование DATE и TIMESTAMP

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

Сложение и вычитание интервалов

В отличие от значений даты/времени, операция суммирования интервалов выглядит вполне разумно. Также имеет смысл и вычитание одного интервала из другого. Необходимо лишь помнить, что интервалы, участвующие в суммировании или вычитании, должны относиться к одному типу. Например:

Умножение и деление интервалов

Операции умножения и деления не применимы к датам, но зато интервал можно умножить или разделить на число. Несколько примеров:

Типы данных INTERVAL без ограничений

Результат выполнения кода:

Цифры были потеряны не только в дробной части секунд, но и в значении количества дней. А если бы переменной dts было присвоено значение, равное 100 или более дням, попытка вызова функции double_my_interval привела бы к ошибке!

Результат будет таким:

Источник

SQL функции даты и времени

oracle прибавить дни к дате. Смотреть фото oracle прибавить дни к дате. Смотреть картинку oracle прибавить дни к дате. Картинка про oracle прибавить дни к дате. Фото oracle прибавить дни к дате

Приветствую Вас, уважаемые читатели блога webcodius.ru. В базе данных часто требуется хранить различные данные связанные с датой и временем. Это может быть дата добавления информации, дата регистрации пользователя, время последней автоизации и другие данные. В языке SQL есть множество функций связанных с датой и временем, сегодня их и рассмотрим.

Все ниже рассмотренные функции работают с календарными типами данных.

Получение текущей даты и времени.

Чтобы получить текущую дату и время используется функция NOW ().

SELECT NOW ()
Результат: 2015-09-25 14:42:53

Для получения только текущей даты есть функция CURDATE ().

SELECT CURDATE ()
Результат: 2015-09-25

И функция CURTIME (), которая возвращает только текущее время:

SELECT CURTIME ()
Результат: 14:42:53

Функции CURDATE () и NOW () удобно использовать для добавления в базу данных записей, для которых требуется хранить дату добавления. Например, при добавлении статьи на сайт хорошо бы хранить ее дату публикации. Тогда запрос на добавление статьи в базу будет примерно таким:

INSERT INTO posts (id_post, text_post, date_publication) VALUES (1, ‘текст статьи’, NOW ());

Прибавление и вычитание дат и времени

Функция ADDDATE (date, INTERVAL value) прибавляет к дате date значение value и возвращает полученное значение. В качестве value могут выступать следующие значения:

а также их комбинации:

SELECT ADDDATE (‘2015-09-28 10:30:20’, INTERVAL 1 DAY)
Результат: 2015-09-29 10:30:20

SELECT ADDDATE (‘2015-09-28 10:30:20’, INTERVAL ‘3 1:20’ DAY_MINUTE)
Результат: 2015-10-01 11:50:20

SELECT SUBDATE (‘2015-09-28 10:30:20’, INTERVAL 20 HOUR)
Результат: 2015-09-27 14:30:20

Функция PERIOD_ADD (period, n) прибавляет к значению period n месяцев. Значение период должно быть представлено в формате YYYYMM (например сентябрь 2015 года будет 201509). Пример:

SELECT PERIOD_ADD (201509, 4)
Результат: 201601

SELECT TIMESTAMPADD (QUARTER, 1, ‘2015-09-28’)
Результат: 2015-12-28

Функция SUBTIME (date, time) вычитает из даты date время time. Пример:

SELECT SUBTIME (‘2015-09-28 10:30:20′, ’50:20:19’)
Результат: 2015-09-26 08:10:01

Вычисление интервала между датами

Функция DATEDIFF (date1, date2) вычисляет разницу в днях между двумя датами, при этом часы, минуты и секунды при указании дат игнорируются. Пример:

SELECT DATEDIFF (‘2015-09-28 00:00:20’, ‘2015-09-27 23:40:20’)
Результат: 1

С помощью этой функции легко определить сколько дней прошло с даты публикации статьи:

SELECT DATEDIFF (CURDATE (), date_publication) FROM posts WHERE id_post = 1

SELECT PERIOD_DIFF (201509, 201501)
Результат: 9

SELECT TIMESTAMPDIFF (HOUR, ‘2015-09-28 10:30:20’, ‘2015-09-28 19:50:20’)
Результат: 9

Получение различных форматов даты и времени и другой информации

Функция DATE (datetime) возвращает дату, отсекая время. Пример:

SELECT DATE (‘2015-09-28 10:30:20’)
Результат: 2015-09-28

Функция TIME (datetime) возвращает время, отсекая дату. Пример:

SELECT TIME (‘2015-09-28 10:30:20’)
Результат: 10:30:20

TIMESTAMP (‘2015-09-28’)
Результат: 2015-09-28 00:00:00

DAY (date) и DAYOFMONTH (date). Функции-синонимы, которые возвращают порядковый номер дня месяца. Пример:

SELECT DAY (‘2015-09-28’), DAYOFMONTH (‘2015-09-28’)
Результат: 28 | 28

Функции DAYNAME (date), DAYOFWEEK (date) и WEEKDAY (date). Первая функция возвращает название дня недели, вторая — номер дня недели (отсчет от 1 — воскресенье до 7 — суббота), третья также номер дня недели только другой отсчет(отсчет от 0 — понедельник, до 6 — воскресенье). Пример:

SELECT DAYNAME (‘2015-09-28’), DAYOFWEEK (‘2015-09-28’), WEEKDAY (‘2015-09-28’)
Результат: Monday 2 | 0

Функции WEEK (date) и WEEKOFYEAR (datetime). Обе функции возвращают номер недели в году, только у первой неделя начинается с воскресенья, а у второй с понедельника. Пример:

SELECT WEEK (‘2015-09-28 10:30:20’), WEEKOFYEAR (‘2015-09-28 10:30:20’)
Результат: 39 | 40

Функция MONTH (date) возвращает числовое значение месяца (от 1 до 12), а MONTHNAME (date) название месяца. Пример:

SELECT MONTH (‘2015-09-28 10:30:20’), MONTHNAME (‘2015-09-28 10:30:20’)
Результат: 9 | September

Функция QUARTER (date) возвращает номер квартала года (от 1 до 4). Пример:

SELECT QUARTER (‘2015-09-28 10:30:20’)
Результат: 3

Функция YEAR (date) возвращает значение года (от 1000 до 9999). Пример:

SELECT YEAR (‘2015-09-28 10:30:20’)
Результат: 2015

Функция DAYOFYEAR (date) возвращает порядковый номер дня в году (от 1 до 366). Прмиер:

SELECT DAYOFYEAR (‘2015-09-28 10:30:20’)
Результат: 271

Функция HOUR (datetime) возвращает значение часа (от 0 до 23). Пример:

SELECT HOUR (‘2015-09-28 10:30:20’)
Результат: 10

Функция MINUTE (datetime) возвращает значение минут (от 0 до 59). Пример:

SELECT MINUTE (‘2015-09-28 10:30:20’)
Результат: 30

Функция SECOND (datetime) возвращает значение секунд (от 0 до 59). Пример:

SELECT SECOND (‘2015-09-28 10:30:20’)
Результат: 20

SELECT EXTRACT (YEAR FROM ‘2015-09-28 10:30:20’), EXTRACT (MONTH FROM ‘2015-09-28 10:30:20’), EXTRACT (DAY FROM ‘2015-09-28 10:30:20’), EXTRACT (HOUR FROM ‘2015-09-28 10:30:20’), EXTRACT (MINUTE FROM ‘2015-09-28 10:30:20’), EXTRACT (SECOND FROM ‘2015-09-28 10:30:20’)
Результат: 2015 | 9 | 28 | 10 | 30 | 20

Взаимообратные функции TO_DAYS (date) и FROM_DAYS (n). Первая преобразует дату в количество дней, прошедших с нулевого года. Вторая, наоборот, принимает число дней, прошедших с нулевого года и преобразует их в дату. Пример:

SELECT TO_DAYS (‘2015-09-28 10:30:20’), FROM_DAYS (736234)
Результат: 736234 | 2015-09-28

Взаимообратные функции UNIX_TIMESTAMP (date) и FROM_UNIXTIME (n). Первая преобразует дату в количество секунд, прошедших с 1 января 1970 года. Вторая, наоборот, принимает число секунд, с 1 января 1970 года и преобразует их в дату. Пример:

SELECT UNIX_TIMESTAMP (‘2015-09-28 10:30:20’), FROM_UNIXTIME (1443425420)
Результат: 1443425420 | 2015-09-28 10:30:20

Взаимообратные функции TIME_TO_SEC (time) и SEC_TO_TIME (n). Первая преобразует время в количество секунд, прошедших от начала суток. Вторая, наоборот, принимает число секунд с начала суток и преобразует их во время. Пример:

SELECT TIME_TO_SEC (’10:30:20′), SEC_TO_TIME (37820)
Результат: 37820 | 10:30:20

Функция MAKEDATE (year, n) принимает год year и номер дня в году n и преобразует их в дату. Пример:

SELECT MAKEDATE (2015, 271)
Результат: 2015-09-28

Источник

Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Базы данных

date функция SQLite

В этом учебном пособии вы узнаете, как использовать SQLite функцию date с синтаксисом и примерами.

Описание

Синтаксис

Синтаксис функции date в SQLite:

Параметры или аргументы

timestring
Значение даты. Это может быть одно из следующих:

modifierПояснение
[+-]NNN yearsКоличество лет, добавленных/вычтенных к дате
[+-]NNN monthsКоличество месяцев, добавленных/вычтенных к дате
[+-]NNN daysКоличество дней, добавленных/вычтенных к дате
[+-]NNN hoursКоличество часов, добавленных/вычтенных к дате
[+-]NNN minutesКоличество минут, добавленных/вычтенных к дате
[+-]NNN secondsКоличество секунд, добавленных/вычтенных к дате
[+-]NNN.NNNN secondsКоличество секунд (и дробных секунд), добавленных/вычтенных к дате
start of yearПеренос даты обратно на начало года
start of monthПеренос даты обратно на начало месяца
start of dayПеренос даты обратно на начало дня
weekday NПеремещает дату вперед на следующую дату, где номер дня недели равен N (0 = воскресенье, 1 = понедельник, 2 = вторник, 3 = среда, 4 = четверг, 5 = пятница, 6 = суббота)
unixepochИспользуется с временной шкалой DDDDDDDDDD для интерпретации даты как времени UNIX (то есть: количество секунд с 1970-01-01)
localtimeРегулирует дату по местному времени, при условии, что временная строка была выражена в UTC
utcПриспосабливает дату к utc, предполагая, что временная строка была выражена в местном времени

Примечание

Функция date возвращает результат, отображаемый в формате ‘YYYY-MM-DD’.

Применение

Функция date может использоваться в следующих версиях SQLite:

Пример

Рассмотрим некоторые примеры SQLite функций date, и узнаем, как использовать функцию date в SQLite.

Пример текущей даты

Вы можете получить текущую дату в SQLite, используя временную строку now с функцией date следующим образом:

Источник

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

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

MySQL

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

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

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 примет вид:

next_wd
2005-12-06 00:00:00

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

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

PostgreSQL и Oracle

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

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

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

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

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

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

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

Источник

Oracle: как добавить минуты к метке времени?

мне нужно добавить 30 минут к значениям в столбце даты Oracle. Я делаю это в своем операторе SELECT, указав

to_char(date_and_time + (.000694 * 31)

11 ответов

все остальные ответы в основном правы, но я не думаю, что кто-то прямо ответил на ваш первоначальный вопрос.

предполагая, что «date_and_time» в вашем примере является столбцом с типом DATE или TIMESTAMP, я думаю, вам просто нужно изменить это:

похоже, что ваш формат даты по умолчанию использует код » HH «для часа, а не»HH24».

Я бы также начал с дня и разделил его на единицы, которые вы хотите в своем коде. В этом случае (1/48) будет 30 минут; или если вы хотите разбить его для ясности, вы можете написать ( (1/24) * (1/2) ).

Это позволит избежать ошибок округления (за исключением присуще плавающей точке, которая здесь должна быть бессмысленной) и понятнее, по крайней мере для меня.

в дополнение к возможности добавить несколько дней к дате, вы можете использовать интервальные типы данных, предполагая, что вы находитесь на Oracle 9i или позже, что может быть несколько проще для чтения,

псевдо-столбец SYSDATE показывает текущую системную дату и время. Добавление 1 в SYSDATE продвинет дату на 1 день. Используйте дроби, чтобы добавить часы, минуты или секунды к дате

здесь interval один из

Я предпочитаю использовать interval литерал для этого, потому что interval ’30’ minute или interval ‘5’ second намного легче читать, чем 30 / (24 * 60) или 5 / (24 * 60 * 69)

вы также можете объединить несколько единиц в одно выражение:

добавляет 2 дня, 3 часа и 6 минут к дате значение

выше также стандартный SQL, а также работает в нескольких других СУБД.

Если тип данных поля-дата или метка времени, Oracle всегда должна давать правильный результат, если вы добавляете правильное число, заданное в количестве дней (или правильную долю дня в вашем случае). Поэтому, если вы пытаетесь увеличить значение за 30 минут, вы должны использовать:

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

мы не можем использовать этот

Я новичок в этой области.

убедитесь, что Oracle понимает, что время начала-PM,и укажите маску формата HH24 для конечного вывода.

основываясь на том, что вы просите, вы хотите формат HH24:MI для to_char.

для редактирования даты в oracle вы можете попробовать

просто вы можете использовать это с различным форматом даты.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *