Выборка по дате из БД по типу VARCHAR

116
17 февраля 2021, 21:40

Здравствуйте уважаемые форумчане. Изначально в работе с проектом не подразумевалась мысль о том что с датой придётся работать. Но на всякий случай она фиксировалась. С типом данных я не заморачивался и для простоты удобства указал varchar. Дата пишется следующим образом 18.06 без года. Время шло, детё выросло) И теперь мне необходимо вытащить некоторые данные из БД по дате и желательно в этом же самом формате %d.%m. Возможно ли это с типом VARCHAR?

Answer 1

К моему удивлению, выборка прекрасно работает и напрямую без переопределения типов. Например:

SELECT * FROM `table_select` WHERE `date` <= '18.06'

Результат: 18.06, 17.06, 16.06...

С реверсом: 18.06, 19.06, 20.06...

Но стоит ли на это надёжно надеяться?)

Answer 2

Если вы не хотите менять тип данных и выполнять преобразование, то придется использовать костыль.

SELECT * FROM `table_select` WHERE 
UNIX_TIMESTAMP(CONCAT('2019-',SUBSTRING(date, 4, 2), "-", SUBSTRING(date, 1, 2))) <= 
UNIX_TIMESTAMP('2019-06-18')

Что делать я не рекомендую.

READ ALSO
PHP use namespace\class не работает в подключаемых файлах

PHP use namespace\class не работает в подключаемых файлах

У меня есть класс Core\Router, который нужно использовать и в indexphp, и в подключаемом файле routes

118
/index.php/news - что это?

/index.php/news - что это?

допустимы ли ссылки такого типа:

133
Installing laravel/laravel (v5.8.17) [ErrorException] mkdir(): Invalid path

Installing laravel/laravel (v5.8.17) [ErrorException] mkdir(): Invalid path

Я только начинаю разбираться не судите строго

118
Декодирование ответа сервера (сокет)

Декодирование ответа сервера (сокет)

Задача: есть сокет, через него отправляю запросы и получаю ответыИзначально он был написан на php, но мне надо переделать его на python

96