在 Postgres 中使用不到上午 9 点的时间删除所有数据

Deleting all the data using time less than 9am in Postgres

我试图从 Postgres 数据库中删除每天 8:58am 之前发生的所有行,而不删除之前的任何日期。

我尝试使用 SELECT * from where DATEPART(hh, request_time) < 09,这在不同数据库上使用 Microsoft SQL 服务器时有效,但是当我 运行 针对 PostgreSQL 的相同脚本 我在 "hh" 上收到错误,因为它说此列不存在。

这是我在 select 其他数据库上的数据时得到的。我希望在不影响前一天的情况下,最后将其删除 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

我希望删除数据库 table 中上午 9 点之前的所有行,因此我最后只会在数据库中得到上午 9 点之后的结果。 编辑:这现在工作了一个小时,但是,我希望删除 8:58 之前的所有内容。我目前有 "select * from table where start_time::time < '05:45:01';" 正在工作,除了包括时间之后的一些额外行,例如:2019-02-27 05:46:15.152079

应该是hour而不是hh

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

Postgres 不是 SQL 服务器。您可以使用 extract():

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

更一般地说,您可以使用:

where start_time::time < '9:00:00'