Votre question

SQL requete sur DATETIME

Tags :
  • Sql
  • Programmation
Dernière réponse : dans Programmation
3 Mars 2010 16:40:49

Bonjour,

Voila dans le cadre de mon master qui concerne un produit de prédiction d'information financière, je suis confronté a un petit problème que je n'arrive pas a résoudre.

Ceci concerne une requête SELECT sur un champ de type DATETIME

Voici ma table
  1. CREATE TABLE IF NOT EXISTS `rates` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `Stock` text NOT NULL,
  4. `Date` datetime NOT NULL,
  5. `Rate` float NOT NULL,
  6. PRIMARY KEY (`id`)
  7. )



Le but de ma requete est qu'elle me retourne une table contenant tous les "Rate" et ceci pour (uniquement) chaque heure.

exemple :

01-01-2001 00h00
01-01-2001 01h00
01-01-2001 02h00
01-01-2001 03h00
01-01-2001 04h00
01-02-2001 00h00
01-02-2001 01h00
01-02-2001 02h00
01-02-2001 03h00
01-02-2001 04h00

Mon problème est qu'actuellement, elle me retourne chaque heure, mais si l'heure "12h00" est déjà sorti a une date, elle ne me l'affichera plus pour une autre date.

voici ma requête

  1. SELECT HOUR(Date) AS Hours, id,DATE(Date) as myDate,TIME(DATE) as myTime, Rate
  2. FROM rates
  3. WHERE Stock = "gold"
  4. GROUP BY HOUR(Date) ORDER BY Date




Voila j'espère avoir été assez claire et surtout avoir posté dans la bonne seciton.

Merci d'avance pour votre aide

Autres pages sur : sql requete datetime

3 Mars 2010 16:48:57

J'ai pas de donnée pour tester là mais essaye de grouper sur un concat

  1. SELECT HOUR(Date) AS Hours, id,DATE(Date) as myDate,TIME(DATE) as myTime, CONCAT(myDate, myTime) as groupDate, Rate
  2. FROM rates
  3. WHERE Stock = "gold"
  4. GROUP BY groupDate
  5. ORDER BY Date


Mais c'est très tordu comme problème ... en général, ce genre de question cache un problème de conception de la base.
m
0
l
3 Mars 2010 16:57:40

Bonjour,

d'abord, merci bcp d'avoir pris le temps de repondre.
Et je n'ai pas encore eu le temps de faire tout les testes, mais ca a l'air de fonctionner..

J'ai juste fait une ou 2 modifs a ta requete ==>

  1. SELECT HOUR( Date ) AS Hours, id, DATE( Date ) AS myDate, TIME( DATE ) AS myTime, CONCAT( DATE( Date ) , HOUR( Date ) ) AS groupDate, Rate
  2. FROM rates
  3. WHERE Stock = "gold"
  4. GROUP BY groupDate
  5. ORDER BY Date
  6. LIMIT 0 , 30


Pour que le concat prenne bien la date et l'heure uniquement...


Merci infiniment
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS