首页 > 解决方案 > 从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”,我也尝试过修剪功能,但它不起作用

标签: sqlstringdate

解决方案


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

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


推荐阅读