J'ai une table dans MySQL qui ressemble à ceci:
date |storenum |views
-------------------------------
08/21/2009 |42 |3
-------------------------------
08/22/2009 |43 |1
-------------------------------
08/21/2009 |43 |4
-------------------------------
08/22/2009 |42 |22
-------------------------------
Je sais que c'est une date non conventionnelleformat, mais je l'utilise par opposition à AAAA-MM-JJ pour la facilité d'utilisation. Pourtant, je dois rechercher cette base de données pour obtenir tous les "View Records" entre deux dates. En général, ça marche, mais quand je cherche depuis une date comme le 01/01/2009 au 01/01/2010, je n’obtiens aucun résultat.
Est-ce que quelqu'un a des suggestions? Les critiques constructives sont les bienvenues. Merci!
Réponses:
3 pour la réponse № 1En toute honnêteté, changez la façon dont vous stockez les dates. Mais pour travailler avec ce que vous avez maintenant, vous pouvez envisager d’utiliser STR_TO_DATE () pour les convertir en dates avec lesquelles MySQL peut travailler.
2 pour la réponse № 2
Vous parlez de facilité d'utilisation - je pense que le cas que vous essayez de résoudre maintenant est un exemple de "pas si facile à utiliser" :).
Je voudrais coller au format par défaut des dates dans MySQL
yyyy-mm-dd h:i:s //php"s date formatting
et utilise RENDEZ-VOUS AMOUREUX des champs. Cela résoudra le problème de recherche / insertion de dates. Bien que vous ayez besoin de changer le code pour corriger l'affichage des dates.
1 pour la réponse № 3
quel est ton date
type de champ? pour une utilisation correcte, il devrait être date
ou datetime
, et voyant ce que vous avez, on dirait que vous stockez dates
dans un varchar. ai-je raison?
Cela a aussi l'avantage que vous pouvez ajouter des index, puis chercher dans des plages via mysql
Ma suggestion est d'obtenir ce que l'utilisateur entre. puis convertissez-le en un format de date mysql pour la recherche
quelque chose comme:
<?php
$mysql_time = date("Y-m-d H:m:s" strotime("05/11/2008"));
$query = sprintf("SELECT * FROM sometable < "%s"", $mysql_time);
?>
0 pour la réponse № 4
Essayez la recherche au format "aaaaMMjj". MySql le reconnaîtra à coup sûr.