在数据库表中 有一字段值是这样的
a:2:{s:2:”a1″;i:1466352000;s:2:”a2″;i:1466438400;}
现在需要检索出 这个字段中 a1后面的i:1466352000 这个时间戳是不是本月内的时间戳,SQL语句应该怎么写呢
a:2:{s:2:”a1″;i:1466352000;s:2:”a2″;i:1466438400;}
现在需要检索出 这个字段中 a1后面的i:1466352000 这个时间戳是不是本月内的时间戳,SQL语句应该怎么写呢
解决方案
5
SELECT FROM_UNIXTIME(1466352000,”%Y-%m-%d”)
5
可以使用 JSON_CONTAINS(json_doc, val[, path]) , 详细用法和例子可以直接参考MYSQL官方免费手册。
15
SELECT FROM_UNIXTIME(SUBSTR(“a:2:{s:2:”a1″;i:1466352000;s:2:”a2″;i:1466438400;}”,LOCATE(“”a1″;i:”,”a:2:{s:2:”a1″;i:1466352000;s:2:”a2″;i:1466438400;}”)+7
,10),”%Y-%m-%d”)
写完这个本人感觉本人的智商被侮辱了。json只有5.7以上才会支持,要不咱试试用java\python什么的
,10),”%Y-%m-%d”)
写完这个本人感觉本人的智商被侮辱了。json只有5.7以上才会支持,要不咱试试用java\python什么的
15
大致就是这样:
SELECT * FROM ( SELECT "a:2:{s:2:"a1";i:1466352000;s:2:"a2";i:1466438400;}" v )t WHERE v REGEXP ""a1";i:[0-9]+;" AND FROM_UNIXTIME(SUBSTRING(v,INSTR(v,""a1";i:")+7,10),"%Y-%m") = DATE_FORMAT(CURDATE(),"%Y-%m")