首页 > 解决方案 > 在 Postgres 中使用少于上午 9 点的时间删除所有数据

问题描述

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

我尝试使用 SELECT * from where DATEPART(hh, request_time) < 09,它在不同数据库上使用 Microsoft SQL Server 时有效,但是当我对 PostgreSQL 运行相同的脚本时,我在“hh”上遇到错误说这个栏目不存在。

这是我在另一个数据库上选择数据时得到的。我希望在不影响 SQL Server 前一天的情况下将其删除: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

标签: sqlpostgresqldatepart

解决方案


Postgres不是SQL Server。您可以使用extract()

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

更一般地,您可以使用:

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

推荐阅读