Как создать запрос на обновление, чтобы установить текущую дату минус несколько дней в таблице? - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь обновить дату в таблице

Выбранные данные из my_table

SELECT * 
FROM my_table 
WHERE date_time > to_date('25/01/2017', 'MM/DD/YYYY')
  AND date_time < to_date('15/09/2017', 'MM/DD/YYYY')

Результат:

  id  | date_time
------+-------------------------------
20873 | 11-SEP-17 02.44.36.953000000 PM
20874 | 14-FEB-17 11.02.32.307000000 AM
20872 | 31-JAN-17 11.50.09.406000000 AM
20871 | 26-JAN-17 12.43.06.868000000 PM

Теперь я хочу установить результат в date_timeСтолбец для результата - 3 дня.

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

  id  | date_time
------+-------------------------------
20873 | 08-SEP-17 02.44.36.953000000 PM
20874 | 11-FEB-17 11.02.32.307000000 AM
20872 | 28-JAN-17 11.50.09.406000000 AM
20871 | 23-JAN-17 12.43.06.868000000 PM

Я пытаюсь что-то вроде этого:

SELECT id, date_time - 3 
FROM my_table 
WHERE date_time > to_date('25/01/2017', 'MM/DD/YYYY')
  AND date_time < to_date('15/09/2017', 'MM/DD/YYYY')

Но результат теперьбез времени ...

Ответы [ 4 ]

2 голосов
/ 18 октября 2019

Вы можете вычесть три дня, используя interval '-3' day

update my_table t
   set t.date_time = t.date_time + interval '-3' day;

Демо

0 голосов
/ 18 октября 2019

Используйте Bellow Query ..

SELECT id, to_char(date_time-3,'MM/DD/YYYY HH:MM:SS')
FROM my_table 
WHERE date_time > to_date('25/01/2017', 'MM/DD/YYYY')
  AND date_time < to_date('15/09/2017', 'MM/DD/YYYY')

ОБНОВЛЕНИЕ Ваш стол

SET  date_time = to_char(date_time-3,'MM/DD/YYYY HH:MM:SS')
WHERE date_time > TO_DATE('25/01/2017', 'MM/DD/YYYY')
AND date_time < TO_DATE('15/09/2017', 'MM/DD/YYYY')
0 голосов
/ 18 октября 2019

Для SQL Server вы можете использовать:

update #my_table set date_time = dateadd(day, -3, date_time) ;

Я просто использовал #my_table (для временной таблицы) вместо my_table. Синтаксис для Teradata различен, но вам необходимо указать необходимую базу данных для конкретного ответа.

0 голосов
/ 18 октября 2019

Использование

DATEADD(DD, -3,date_time) --FOR MSSQL
TO_DATE(date_time, 'MM/DD/YYYY') -3 --FOR Oracle / PLSQL

Попробуйте сделать это до обновления:

SELECT id, date_time, TO_DATE(date_time, 'MM/DD/YYYY') -3 as new_date_time
FROM my_table 
WHERE date_time > TO_DATE('25/01/2017', 'MM/DD/YYYY')
AND date_time < TO_DATE('15/09/2017', 'MM/DD/YYYY')

Для обновления:

UPDATE my_table 
SET  date_time = TO_DATE(date_time, 'MM/DD/YYYY') -3
WHERE date_time > TO_DATE('25/01/2017', 'MM/DD/YYYY')
AND date_time < TO_DATE('15/09/2017', 'MM/DD/YYYY')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...