sql - 将任意字符串值转换为时间戳 SQL
问题描述
我想知道是否有一种方法可以将任意字符串值(例如下面的示例)转换为可以解释为时间戳的东西,可能以天为单位。
下拉值 | 期望产出(天) |
---|---|
12 周 | 84 |
1 周 4 天 | 11 |
1年 | 365 |
1 年 1 周 2 天 | 374 |
我的想法是将值分开,因为它们都用空格分隔,然后在单独的列中进行添加,还有其他(更好的)方法可以做到这一点吗?谢谢你。
解决方案
扩展我的评论作为答案:
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
。像84
cannot be这样的值timestamp
。你可以把它变成一个区间,比如:84 * '1 day'::interval 84 days
. 如果可能的话,最好将数据存储为实际时间戳(开始和结束),然后从中派生间隔。
推荐阅读
- discord - 试图放慢速度
- python - 如何使用 scikit-learn 中的 SelectFromModel 正确进行特征选择?
- flutter - 测试中未找到材质小部件
- javascript - moment js `format` 方法打破时间
- java - 在 Springboot 2.3.0 中无法覆盖嵌入式 Tomcat 版本
- javascript - JavaScript 中的原型继承与扩展运算符
- c - 为什么要在 for 循环中声明 va_list?
- c# - Xunit 测试按钮单击事件中的 if 条件
- django - Django Rest Framework - 唯一字段,但仍允许具有相同值的多个对象
- shopify - 如何在 ShopifyAPI 上创建退款