postgresql - Postgres 在时间戳中添加值
问题描述
我怎么能查询除年份之外的所有时间戳部分加起来为 50,
例如,在我的数据库 testdb 中,我的列带有字符串时间戳,例如,在该列中,我有时间戳字符串,
2016-03-01 07:13:21
2019-07-03 04:04:49
等等,所以它们被 -
所以当我查询我的数据库时,Select timestamp from testdb where.... = 50
我想查看所有行中的单个时间戳字符串在哪里加起来为 50
解决方案
删除年份,然后将日、月、小时、分钟和秒相加,然后如果达到 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
将时间戳值存储在(或)列中是一个非常糟糕的主意。它们应该存储在定义为或更好的列中text
varchar
timestamp
timestamptz
推荐阅读
- c# - 当涉及到具有大量可选参数的函数时,惯例是什么?
- java - 为什么空 libGDX-App 的 RAM 使用率稳步攀升?
- asp.net - 无法下载 pdf 文件在 .asp.net 中的 pdf 扩展名
- linux - 运行 `perf trace -s` 时,`perf stat`(和`time`!)是否显示不正确的结果?
- selenium - 当向后兼容性被删除时,如何使用 ChromeDriver 73 和 Chrome 版本 74 执行现有的 selenium 脚本?
- javascript - 无法从 Javascript 重新加载 Android WebView
- system - 如何建模 IEEE 6 总线系统单元承诺?
- r - 停止切换/隐藏的对象移动
- python - 在 StructType 数组上应用 UDF
- amazon-s3 - 如何在存储桶上配置 S3 事件以使用 ansible 触发 lambda