Удаление всех данных, используя время менее 9 утра в Postgres - PullRequest
1 голос
/ 07 мая 2019

Я пытаюсь удалить все строки из базы данных Postgres, которые происходят до 8:58 утра каждый день, не удаляя даты, которые предшествовали.

Я пытался использовать SELECT *, где DATEPART (hh, request_time) <09, который работает при использовании Microsoft SQL Server в другой базе данных, но когда я запускаю этот же сценарий для PostgreSQL, я получаю сообщение об ошибке"чч", как говорится, этот столбец не существует.</p>

Это то, что я получаю, когда выбираю данные в другой базе данных.Я хотел бы, чтобы это было удалено в конце, не затрагивая день перед сервером SQL: SELECT * from <table> where DATEPART(hh, request_time) < 09

2019-04-26 08:59:26.000
2019-04-27 03:01:25.000
2019-04-29 02:06:46.000

MobaXterm:

 SELECT * from <table> where DATEPART(hh, start_time) < 09; 
 error message: column "hh" does not exist

Я ожидаю любые строки, которыедо 9 утра в таблице базы данных, которая будет удалена, поэтому у меня будут только результаты, которые после 9 утра в базе данных в конце.редактировать: это теперь работает в течение часа, однако я хочу сделать так, чтобы все до 8:58 было удалено.В настоящее время у меня есть "выбрать * из таблицы, где start_time :: time <'05: 45: 01 ';"который работает, за исключением включения нескольких дополнительных строк, которые появляются после времени, например: 2019-02-27 05: 46: 15.152079 </p>

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Postgres - это , а не SQL Server. Вы можете использовать extract():

select *
from <table>
where extract(hour from start_time) < 9; 

В общем, вы можете использовать:

where start_time::time < '9:00:00'
0 голосов
/ 07 мая 2019

это будет hour вместо hh

SELECT * from table_name where DATEPART(hour, start_time) < 09
...