首页 > 解决方案 > 将任意字符串值转换为时间戳 SQL

问题描述

我想知道是否有一种方法可以将任意字符串值(例如下面的示例)转换为可以解释为时间戳的东西,可能以天为单位。

下拉值 期望产出(天)
12 周 84
1 周 4 天 11
1年 365
1 年 1 周 2 天 374

我的想法是将值分开,因为它们都用空格分隔,然后在单独的列中进行添加,还有其他(更好的)方法可以做到这一点吗?谢谢你。

标签: sqlpostgresqlsplittimestamp

解决方案


扩展我的评论作为答案:

select extract(epoch from '12 Week'::interval)/86400; 84
select extract(epoch from '1 Year 1 Week 2 Days'::interval)/86400; 11
select extract(epoch from '1 Year 1 Week 2 Days'::interval)/86400; 374.25

以上是我通常如何处理这类事情。从间隔中提取epoch值,然后除以一天中的秒数。在文档中阅读此间隔输入间隔输出以了解如何构造和返回间隔以及使用的假设是一个好主意。注意:查询将返回一个float值而不是 a timestamp。像84cannot be这样的值timestamp。你可以把它变成一个区间,比如:84 * '1 day'::interval 84 days. 如果可能的话,最好将数据存储为实际时间戳(开始和结束),然后从中派生间隔。


推荐阅读