2010-11-17 6 views
0

J'ai une table msql qui a l'entrée de données jamais d'heure de chaque jour, de sorte que chaque jour est entré 24 fois, puis un champ heure comme on le voit ci-dessous ...Daterange triés par date et groupe par heure

Comment faire Je reçois l'information entre une daterange?

Voici ce que j'ai, mais je pense que le temps est arrêter de travailler ...

$sql = "SELECT * FROM report WHERE date BETWEEN '$start' AND '$end'"; 

Hee est la table que je veux obtenir de l'information à la date ...

unité ID | Date | Temps | Puissance | Volts | Actuel |

1   10/15/2010 21:00:00   0   220   100 
1   10/15/2010 22:00:00   0   220   100 
1   10/15/2010 23:00:00   0   220   100 
1   10/16/2010 00:00:00   0   220   100 
1   10/16/2010 01:00:00   0   220   100 
1   10/16/2010 02:00:00   0   220   100 
1   10/16/2010 03:00:00   0   220   100 
1   10/16/2010 04:00:00   0   220   100 
1   10/16/2010 05:00:00  245   220   100 
1   10/16/2010 06:00:00  360   220   100 
1   10/16/2010 07:00:00  596   220   100 
1   10/16/2010 08:00:00  1567   220   100 
1   10/16/2010 09:00:00  1568   220   100 
1   10/16/2010 10:00:00  1598   220   100 
1   10/16/2010 11:00:00  1642   220   100 
1   10/16/2010 12:00:00  1658   220   100 
1   10/16/2010 13:00:00  1664   220   100 
1   10/16/2010 14:00:00  1598   220   100 
1   10/16/2010 15:00:00  1527   220   100 
1   10/16/2010 16:00:00  980   220   100 
1   10/16/2010 17:00:00  410   220   100 
1   10/16/2010 18:00:00  208   220   100 
1   10/16/2010 19:00:00   0   220   100 
1   10/16/2010 20:00:00   0   220   100 
1   10/16/2010 21:00:00   0   220   100 
1   10/16/2010 22:00:00   0   220   100 
1   10/16/2010 23:00:00   0   220   100 
1   10/17/2010 00:00:00   0   220   100 
1   10/17/2010 01:00:00   0   220   100 
1   10/17/2010 02:00:00   0   220   100 

La date est DATE, le champ temporel est TIME, puissance, Volt et le courant sont FLOAT.

Le $start et $end sont les dates d'un datepicker

$start = (isset($_POST['start1'])) ? date("Y-m-d",strtotime($_POST['start1'])) : date("Y-m-d"); 

$end = (isset($_POST['end1'])) ? date("Y-m-d",strtotime($_POST['end1'])) : date("Y-m-d"); 
+0

Quels types ont vos champs Date et Heure? quelles sont les valeurs conain $ start et $ end end les variables? – heximal

+0

Quel est le type de champ de date? –

+0

À quoi ressemble la chaîne de requête? Cherchez-vous des erreurs après avoir lancé 'mysql_query()'? Quelque chose comme '$ stmt = mysql_query ($ sql) ou die (mysql_error())'. –

Répondre

0

Non, si vous voulez tous points de toutes les dates, vous pouvez vous ignorez la colonne de temps et de votre requête fonctionnera très bien.

0

Vous devez supprimer les guillemets simples (') des variables $ start et $ end. En utilisant des guillemets simples, vous faites de vos variables une chaîne de caractères.

Il suffit d'utiliser

$ sql = "SELECT * FROM rapport Si la date entre $ début et $ fin";

Dans votre table mysql, la date est au format m-D-Y, alors que dans votre code php, c'est Y-m-d. Le format de la date dans votre code php devrait être similaire à votre format de date mysql.