MySQL Поиск даты ММ / ДД / ГГГГ в ММ / ДД / ГГГГ - PullRequest
0 голосов
/ 24 августа 2009

У меня есть таблица в MySQL, которая выглядит следующим образом:

date        |storenum   |views 
-------------------------------
08/21/2009  |42         |3  
-------------------------------
08/22/2009  |43         |1    
-------------------------------
08/21/2009  |43         |4  
-------------------------------
08/22/2009  |42         |22
-------------------------------

Я знаю, что это нестандартный формат даты, но я использую его вместо YYYY-MM-DD для простоты использования Все же я должен искать эту базу данных, чтобы получить все "Просмотр записей" между двумя датами. В целом это работает, но при поиске с даты, такой как 01.01.2009 по 01.01.2010, я не получаю результатов.

У кого-нибудь есть предложения? Конструктивная критика приветствуется. Спасибо!

Ответы [ 4 ]

3 голосов
/ 24 августа 2009

Честно говоря, измените способ хранения дат. Но для работы с тем, что у вас есть, вы можете использовать STR_TO_DATE () , чтобы преобразовать их в даты, с которыми MySQL может работать.

2 голосов
/ 24 августа 2009

Вы упомянули простоту использования - я думаю, что дело, которое вы пытаетесь разрешить сейчас, является примером "не очень простого в использовании" :).

Я бы придерживался формата дат по умолчанию в MySQL

yyyy-mm-dd h:i:s //php's date formatting 

и используйте поля ДАТА . Это решит проблему поиска / вставки дат. Хотя вам нужно изменить код, чтобы исправить отображение дат.

1 голос
/ 24 августа 2009

каков ваш тип поля date? для правильного использования это должно быть date или datetime, и, видя, что у вас есть, похоже, вы храните dates в varchar я прав?

Это также имеет то преимущество, что вы можете добавлять индексы, а затем искать в диапазонах через mysql

Мое предложение - получить то, что вводит пользователь. а затем преобразовать его в формат даты MySQL для поиска

что-то вроде:

<?php

$mysql_time = date('Y-m-d H:m:s' strotime('05/11/2008'));

$query = sprintf("SELECT * FROM sometable < '%s'", $mysql_time);

?>
0 голосов
/ 24 августа 2009

Попробуйте выполнить поиск в формате "yyyyMMdd". MySql точно его распознает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...