У меня есть строка json, которая выглядит следующим образом:
{"mo":[{"from":800,"to":1100},{"from":1400,"to":1700}],"di":[{"from":800,"to":1100},{"from":1400,"to":1700}],"do":[{"from":800,"to":1100},{"from":1400,"to":1700}],"mi":[{"from":800,"to":1100}],"fr":[{"from":800,"to":1300}],"so":[],"sa":[]}
Поле mysql, содержащее эту строку json, объявлено в конфигурации как sql_attr_json
.
Следующее WHERE
условие работает нормально:
WHERE json.mo[0].from < 1100
однако следующее не дает:
WHERE json.mo[0].from < json.mo[0].to
это приводит к:
sphinxql: syntax error, unexpected IDENT near 'json.mo[0].to
Почему это так?Я пытаюсь реализовать проверку на часы работы, но, к сожалению, мне действительно тяжело это делать, я пробовал дюжину разных подходов, и ничего не получается.
Обновление:
Я также пытаюсь сделать:
WHERE (DATE_FORMAT(NOW(),'%H%i') between json.mo[0].from and json.mo[0].to)
, что приводит к
sphinxql: syntax error, unexpected '(' near '(NOW(),'%H%i')) between json.mo[0].from and json.mo[0].to)
Даже простой
SELECT DATE_FORMAT(NOW(),'%H%i') < 1050
приводит к той же ошибке
Sphinx expr: syntax error, unexpected '(', expecting $end near '(NOW(),'%H%i') < 1050'
В качестве обходного пути я также попытался
SELECT CONCAT(HOUR(NOW()), MINUTE(NOW())) currentTime;
, но в результате
sphinxql: syntax error, unexpected $end, expecting FROM or ',' near 'currentTime'
В MySQL он работает просто отлично