У меня есть столбец (строка (8)), который содержит данные типа 12032008, и я должен показать его как 12/03/2008. Что делать с поиском запроса?
Наиболее подходящая вещь для вас здесь - остановить хранение информации о дате в текстовых столбцах. Вместо этого поставьте 12032008
в колонку datetime
bona fide. Это сделает вашу жизнь проще всего в долгосрочной перспективе. Если вы не можете сделать это в краткосрочной перспективе, вот два варианта для вас.
Короче говоря, просто используя базовые строковые функции:
SELECT
CONCAT(LEFT(col, 2), '/', SUBSTRING(col, 3, 2), '/', RIGHT(col, 4)) AS output
FROM yourTable;
Более длинный путь и, вероятно, лучшее долгосрочное решение, заключалось бы в том, чтобы сначала преобразовать строку даты в дату, а затем преобразовать ее обратно в строку, используя нужное форматирование:
SELECT
DATE_FORMAT(STR_TO_DATE(col, '%d%m%Y'), '%d/%m/%Y') AS output
FROM yourTable;
В mysql сначала преобразуйте его в объект date с использованием STR_TO_DATE
затем для форматирования используйте DATE_FORMAT
SELECT DATE_FORMAT(STR_TO_DATE('12032008','%d%m%Y'),'%d/%m/%Y')
Но в идеале вы не должны сохранять дату или дату как строки в таблице, это сделает вещи сложными для mysql, и для вас также