Intereting Posts
Получение ошибки «Авторизованный токен от поставщика услуг не соответствует предоставленным сведениям о токенах запроса» в трехзначной аутентификации в google api Прочтите файл CVS и выпустите файл CSV в файл .txt. Отправка данных с использованием метода отправки без формы Session недоступен и не входит в число последних 1000 завершенных сеансов. Как это решить? RecursiveIteratorIterator и RecursiveDirectoryIterator для вложенных списков html PHP: Показать диалог подтверждения да / нет Сценарий Bash для запуска скрипта php Используя PDO, действительно ли мне нужно запустить два отдельных подготовленных оператора, чтобы получить количество возвращаемых строк? удаление doctype при сохранении domdocument Как вызвать php-файл в div? Как выполнить запрос геолокации в Laravel 5? Новый API-интерфейс APNS-провайдера и PHP Поиск строк в файле docx с помощью PHP Laravel 4.2 Сохранение пути к базе данных Как анализировать XML-файл с пространствами имен?

SQL Query On Date, когда тип VARCHAR

Я пытаюсь запросить базу данных с двумя датами … Проблема заключается в том, что столбец, который я запрашиваю, содержит даты, которые в настоящее время отформатированы как «01/01/2014» (дд / мм / гггг) с колонкой тип VARCHAR.

На данный момент я не могу преобразовать столбец в тип даты.

В основном, когда я запрашиваю таблицу, потому что она не установлена ​​в тип даты, между запросом не возвращаются правильные строки …

Кто-нибудь еще сталкивается с этой проблемой, есть ли что-то, что я могу изменить в запросе?

$this->db->where('IssueDate >=', '02/12/2013'); $this->db->where('IssueDate <=', '22/01/2014'); $query = $this->db->get('MYTABLE'); 

Спасибо, парни.

Решение состоит в использовании str_to_date() :

 $this->db->where("str_to_date(IssueDate, '%d/%m/%Y') >=", "'2013-12-92'"); $this->db->where("str_to_date(IssueDate, '%d/%m/%Y') <=", "'2014-01-22'"); $ 

У вас может не быть никакого контроля над базой данных. Но у вас есть контроль над своими собственными константами. Вы должны привыкнуть к стандарту ISO YYYY-MM-DD для таких констант – однозначно и правильно приниматься большинством баз данных.

Я мог бы предложить создать представление в таблице в базе данных, которая преобразует столбцы строки даты, которые у вас есть, в следующем формате … YYYYMMDD

Этот формат является сортируемым и его можно легко сравнивать по сравнению с другими аналогичными датами в формате – вы можете даже провести с ним арифметику дат.

Имейте в виду, что представление не копирует таблицу или не добавляет никаких служебных накладных расходов. Часто бывает полезно получить доступ к любой таблице через представление, даже если изначально вам не нужно выполнять какие-либо манипуляции в базовой таблице – это поможет, если вы позже обнаружите, что вам нужно их выполнять.

используйте предложение BETWEEN с STR_TO_DATE () . Проверьте код ниже:

 $wh = STR_TO_DATE(`IssueDate`,'%d/%m/%Y')." between '02/12/2013' and '22/01/2014'"; $this->db->where($wh); 

Ожидайте, что это даст вам отличный результат.