sql - 在 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
解决方案
Postgres不是SQL Server。您可以使用extract()
:
select *
from <table>
where extract(hour from start_time) < 9;
更一般地,您可以使用:
where start_time::time < '9:00:00'
推荐阅读
- javascript - Angular 使用 javascript 函数
- javascript - 过滤不以字母开头的字符串数组
- xml - 在 GJS 中解析 XML?
- java - 如何从表单获取输入值到servlet
- java - 如何将字符串从 HQL 查询结果转换为 ManagedBean 中的日期
- ffmpeg - 如何使用 ffmpeg 为编码的视频添加字幕?
- c++ - Visual Studio Code 运行环境
- batch-file - 用于获取文件夹和子文件夹列表以及类型为文件的批处理脚本
- excel - Excel 帮助:查找/匹配案例的适当函数
- wordpress - 禁用特定用户的密码更改选项