J'ai une colonne nommée Par exemple, si j'ai cherché la colonne de valeurs updateTime code> c'est un horodatage code>. Ainsi, par exemple, une valeur de la vie moyenne pourrait être la suivante: 2011-02-01 09:00:51 Code>. Je veux pouvoir rechercher et retourner tous les résultats pour une heure donnée de la journée quelle que soit la date. entre 09:00:00 et 09:59:99 code> il retournerait: p> 2011-02-01 09:00:51
2011-01-31 09:20:51
2011-01-11 09:55:44
etc....
5 Réponses :
Vous pouvez utiliser le heure ( ) fonction: hélas, la performance de cette requête sera horrible em>, dès que vous passez plus de quelques milliers de lignes - les fonctions ne sont pas indexables Donc, il y aura une balayage de table complète chaque fois que cette requête fonctionne. P> Qu'est-ce que nous avons fait dans une situation similaire: nous avons créé une autre colonne Oui, nous avons dénormalisé les données, et c'est un peu plus de ménage, mais je n'ai pas encore trouvé une solution plus rapide. (Nous avons considéré et mesuré insert et mettons à jour les déclencheurs pour renseigner le updateTime_hour code>, indexée et peuplé sur Insérer (et mis à jour sur la mise à jour); Ensuite, la requête devient rapide: p> updateTimetime_hour code> à partir de updateTime code>, mais décidé contre des performances; voir s'ils seraient utiles pour vous.) P> p>
Bon point sur la performance. Je peux implémenter une colonne d'une heure indexée sur l'insertion assez facile, mais toutes les idées sur la manière de passer par mes précédentes lignes 60K et de mettre à jour les données de colonne 'updatetime_hour'?
@ user410341: pendant les heures de pointe, et très soigneusement;) Mettez à jour votre carte de mise à jour UpdateTime_hour = heure (UpdateTime); Code> <- Ceci prendra un certain temps
Merci, je viens de poster comme une nouvelle question: Stackoverflow.com/questions/4866056/...
SELECT * FROM table WHERE hour('updatetime') = 9;
Would return 9am..
Possibilité:
Sélectionnez * à partir de 'Table' où heure (UpdateTime) = '09'; Code> P>
Ces réponses ne fonctionnent pas, c'est ce qui a fonctionné pour moi uniquement
SELECT hour(FROM_UNIXTIME(`updatetime`)) AS date_formatted FROM `table` where hour(FROM_UNIXTIME(`updatetime`))='9'