如何从mysql中的字符串变量中提取时间戳

时间:2016-04-21 15:42:09

标签: mysql

我在列b中有以下数据,这是表x的一部分。

    Table x   Column b
              {"op":"&","c":[{"type":"date","d":">=","t":1459756800}],"showc":[true]}        
              {"op":"&","showc":[true],"c":[{"type":"date","d":">=","t":1460534400}]}

我尝试使用下面的查询表来提取我的数据但不起作用,因为时间戳位于不同的位置。

          SELECT substring(Column b, 44 , 10)  
          FROM Table x

我如何才能提取时间戳。 非常赞赏

1 个答案:

答案 0 :(得分:1)

这个答案适用于MySQL< 5.7,似乎5.7添加了json支持

本机查询不支持JSON解析,如果您尝试将此列解析为字符串,则会导致各种麻烦。问题的示例是由于不同的属性,字符串长度等而导致时间戳的值位置不同。

您需要通过脚本(php,...)或增加mysql功能来添加json解析支持

我从来没有使用它,但通用架构可以帮助你。我相信还有其他方法 https://code.google.com/archive/p/common-schema/

来自http://mechanics.flite.com/blog/2013/04/08/json-parsing-in-mysql-using-common-schema/的使用示例:

mysql> select common_schema.extract_json_value(f.event_data,'/age') as age,
    ->   common_schema.extract_json_value(f.event_data,'/gender') as gender,
    ->   sum(f.event_count) as event_count 
    -> from json_event_fact f
    -> group by age, gender;