у меня есть ref
поле в моей таблице MySQL, которое содержит значения, которые выглядят как «0-0-at-3267-201411041356». Первая часть (0-0-at-3267-) отличается по длине и значениям, а вторая часть (201411041356) представляет собой дату / время, которое ссылается на дату / время создания. Все, для чего используется этот код, проверяется, чтобы увидеть, попадает ли он в определенный период даты / времени, например между 201409010000 и 201508312359.
Обычно я могу просто взорвать данные и затем измерять, но для этого случая это сделало бы это слишком неуклюжим. Так что я хочу сделать, это использовать LIKE
функция в моем запросе так LIKE '%201411041356'
но я хочу использовать его с >
а также <
символы, поэтому полный запрос выглядит примерно так SELECT * FROM my_table WHERE ref LIKE > '%201409010000' AND ref LIKE < '%201508312359'
Любые идеи будут приветствоваться! Кстати, это всегда был способ хранения этих данных, и их много, поэтому изменять их нельзя.
Не могли бы вы использовать между на подстроке, так что-то вроде:
SELECT * FROM my_table WHERE SUBSTRING(ref,-12) BETWEEN '201409010000' AND '201508312359'
SELECT *
FROM my_table
WHERE SUBSTRING(ref,-12) BETWEEN '201409010000' AND '201508312359'`
будет лучше для вычитания последних 12 символов.
Потому что вы написали, что первая часть может иметь разную длину, поэтому у вас есть подстрока полосы, начиная с конца.
Таким образом, ваш запрос может выглядеть так:
SELECT * FROM table
WHERE
SUBSTRING('ref', -12) > $from
AND
SUBSTRING('ref', -12) < $to
Если вы просто хотите измерить по дате использования:
left(right(ref, 12), 8)