关于mysql 正则匹配,求高手指点

MySql 码拜 8年前 (2016-05-01) 827次浏览
在数据库表中 有一字段值是这样的
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什么的

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")

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于mysql 正则匹配,求高手指点
喜欢 (0)
[1034331897@qq.com]
分享 (0)