我想从MySQL数据库的JSON类型列查询数据。
我得到一个有效的查询并从JSON字段返回数据:
SELECT
readouts->"$.temperature_sensor_1.readTimestamp"
FROM
`readouts_store`
WHERE
`readout_id`=75898
它返回:
"2018-02-04 20:11:53"
但要按日期限制选定的数据,我需要它如下:
SELECT
readouts->"$.temperature_sensor_1.value"
FROM
`readouts_store`
WHERE
`application_id`=1
AND
readouts->"$.temperature_sensor_1.readTimestamp", '%Y-%m-%d %H:%i:%s' BETWEEN '2018-02-03' AND '2018-02-05'
它不起作用,因此我认为我应该将
readouts->"$.temperature_sensor_1.readTimestamp"
转换为如下日期类型:SELECT
readouts->"$.temperature_sensor_1.value"
FROM
`readouts_store`
WHERE
`application_id`=1
AND
STR_TO_DATE(readouts->"$.temperature_sensor_1.readTimestamp", '%Y-%m-%d %H:%i:%s') BETWEEN '2018-02-03' AND '2018-02-05'
很遗憾,它不起作用,因为STR_TO_DATE()返回空:
SELECT
STR_TO_DATE(readouts->"$.temperature_sensor_1.readTimestamp", '%Y-%m-%d %H:%i:%s')
FROM
readouts_store
WHERE
`readout_id`=75898
我也尝试了DATE()和CONVERT(“”,DATE),但结果是一样的,而不是STR懔TO懔DATE()。
MySQL不支持这样的功能吗?我在这方面的文件中找不到任何参考资料。
最佳答案
当您使用->
时,返回值本身就是一个JSON值,因此它似乎有双引号。
使用->>
返回去掉引号的“原始”标量值。
有关差异的更多信息,请参见https://dev.mysql.com/doc/refman/5.7/en/json.html。
关于mysql - MySQL JSON函数-在DATE之前查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48613111/