Как вернуть поле даты, чтобы добавить два дня и не повлиять на исходную дату? - PullRequest
1 голос
/ 24 июня 2019

У нас есть столбец, в котором хранится дата (ММ / ДД / ГГГГ), когда чья-то учетная запись последний раз обновлялась автоматической службой.Когда этой дате два дня, у нас есть другая автоматизированная служба, которая автоматически устанавливает блокировку учетной записи.

По сути, мне нужно вернуть дату, когда удержание было фактически помещено на счет.Ниже приведен мой код для возврата всех пользователей, у которых есть это.e.lastupdate - это поле, к которому нужно добавить два дня

select p.id||'    '||p.lastname||'    '||p.firstname||'    '|| e.lastupdate 
from table p, othertable e

where p.id = e.id 
and hold = 8 
and id in (
select id from othertable 
where buildinginfo is null
) 
order by id;

Ожидаемые результаты будут через два дня после поля "e.lastupdate"

1 Ответ

0 голосов
/ 24 июня 2019

Я не уверен, что ответ, который вы ищете, просто вопрос о том, как работать с датами?Если это так, см. Мой ответ, в котором показано, как выполнять вычисления для дат / времени.

Ниже просто добавлен новый столбец, добавленный к вашему запросу, который называется lastupdate_plus_2_days

SELECT p.id||'    '||p.lastname||'    '||p.firstname||'    '|| e.lastupdate + 2
  , e.lastupdate + 2 AS lastupdate_plus_2_days
FROM some_TABLE p, othertable e
WHERE p.id = e.id
AND hold   = 8
AND id    IN
  (
    SELECT id
    FROM othertable
    WHERE buildinginfo IS NULL
  )
ORDER BY id;

Примеры Работа с датами

/* Working with SYSDATE and to_char formats */
SELECT
  sysdate -365 Last_Year,
  to_char(to_date('04-DEC-2013', 'DD-MON-YY') - 365, 'DD-MON-YYYY') AS Last_Year2,
  add_months(sysdate, -1) Last_Month,
  sysdate -7 Last_Week,
  sysdate -1 Yesterday,
  sysdate Today,
  to_char(sysdate, 'DD-MON-YY HH:MI:SS') NOW,
  to_char(sysdate + 1/(24*60*60), 'DD-MON-YY HH:MI:SS') "OneSecFrom_NOW",
  to_char(sysdate + 2/(24*60*60), 'DD-MON-YY HH:MI:SS') "TwoSecFrom_NOW",
  to_char(sysdate + 1/(24*60), 'DD-MON-YY HH:MI:SS') "OneMinFrom_NOW",
  to_char(sysdate + 7/(24*60), 'DD-MON-YY HH:MI:SS') "SevMinFrom_NOW",
  to_char(sysdate + 1/24, 'DD-MON-YY HH:MI:SS') "OneHrFrom_NOW",
  sysdate +1 Tomorrow,
  sysdate +7 Next_Week,
  last_day(sysdate) as last_day_of_month,
  add_months(sysdate, 1) Next_Month,
  last_day(add_months(sysdate, 1)) as last_day_of_next_month,
  sysdate +365 Next_Year,
  /* Below are examples of how you could disect a number of days and spit out how many years, months, days are within those days using the mod function. */
  trunc((to_date('02-FEB-14') - to_date('01-JAN-13'))/365) "~yr", trunc(mod((to_date('02-FEB-14') - to_date('01-JAN-13')),365)/31) "~mon", mod(mod((to_date('02-FEB-14') - to_date('01-JAN-13')),365),31) "~days"
FROM
  dual;

Является ли этот ответ тем, что вы искали?Если где-то не будет кода, выполняющего «ОБНОВЛЕНИЕ», исходная дата, возвращаемая из вашего запроса «ВЫБОР», никогда не изменит исходного значения даты в таблице, из которой вы извлекаете данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...