从sql中的String列中提取日期

时间:2018-06-01 20:32:37

标签: sql string date

我有一个列 current_data ,它的数据类型为字符串,数据为{" settlement_date":" 2018 -07-21"}。 我的问题是,对于每笔交易,结算日期将不同,我想从每个交易的 current_data 列中提取日期,即 2018-07-21 。我尝试使用select to_char(date_trunc(d.current_data,' YYYY-MM-DD'))作为" Current_date"我也尝试了修剪功能,但它不起作用

1 个答案:

答案 0 :(得分:1)

看起来像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

请注意,此解决方案依赖于字符串的长度,并且设计用于静态输入,其中提取的子字符串始终位于相同位置。