首页 > 解决方案 > Postgres 在时间戳中添加值

问题描述

我怎么能查询除年份之外的所有时间戳部分加起来为 50,

例如,在我的数据库 testdb 中,我的列带有字符串时间戳,例如,在该列中,我有时间戳字符串

2016-03-01 07:13:21
2019-07-03 04:04:49

等等,所以它们被 -

所以当我查询我的数据库时,Select timestamp from testdb where.... = 50我想查看所有行中的单个时间戳字符串在哪里加起来为 50

标签: postgresql

解决方案


删除年份,然后将日、月、小时、分钟和秒相加,然后如果达到 50,它将只显示符合条件的行

因此,您首先需要使用例如将字符串转换为时间戳to_timestamp(the_column, 'yyyy-mm-dd hh24:mi:ss')

从那里您可以使用extract 提取时间戳的每个部分:

select *
from the_table
where extract(month from to_timestamp(the_column, 'yyyy-mm-dd hh24:mi:ss') 
    + extract(day from to_timestamp(the_column, 'yyyy-mm-dd hh24:mi:ss') 
    + extract(hour from to_timestamp(the_column, 'yyyy-mm-dd hh24:mi:ss') 
    + extract(minute from to_timestamp(the_column, 'yyyy-mm-dd hh24:mi:ss') 
    + extract(second from to_timestamp(the_column, 'yyyy-mm-dd hh24:mi:ss')  = 50

将时间戳值存储在(或)列中是一个非常糟糕的主意。它们应该存储在定义为或更好的列中textvarchartimestamptimestamptz


推荐阅读