sql - 从sql中的String列中提取日期
问题描述
我有一个作为current_data的列,它的数据是字符串类型,数据是 {"settlement_date":"2018-07-21"}。我的问题是,对于每笔交易,结算日期都会不同,我想提取日期,即2018-07-21从每笔交易的current_data列。我尝试使用 select to_char(date_trunc(d.current_data,'YYYY-MM-DD')) 作为“Current_date”,我也尝试过修剪功能,但它不起作用
解决方案
它看起来像JSON
数据。由于您在内部说它是一个文本列,因此您可以使用substring
函数仅剪切您要查找的数据。
select substring(current_data from 21 for 10) from yourtable
您从 21 个字符开始获取子字符串,并指定它的长度将是接下来的 10 个字符。
使用您的样本数据,结果将是
db=# select substring('{"settlement_date":"2018-07-21"}' from 21 for 10);
substring
------------
2018-07-21
请注意,此解决方案依赖于字符串的长度,并且专为静态输入而设计,其中提取的子字符串始终位于同一位置。
推荐阅读
- elasticsearch - 是否可以计算 grafana 度量中的两个日期直方图?(想要有持续时间)
- assembly - 修改“argv”数组以指向“/proc/flag”时出错
- c - 在 C 中正确使用 volatile 关键字
- google-bigquery - 错误代码 3:没有要开始运行的作业:[BigQuery 转移]
- matplotlib - 如何从概率密度函数测量概率
- angular - Angular 6 更新 package.json 中过时的依赖项
- mysql - 如何在LabVIEW中查询MySQL ODBC版本
- javascript - vuejs 应用程序如何在 textarea 光标的位置显示组件?
- scala - 带有 webSocketClientFlow 的空流
- mysql - MySQL 从 2 个连接的表中选择最低价格