2016-01-29 1 views
0

Je dois interroger des données dans certaines plages de date et d'heure. J'ai une base de données ClearDB dans heroku avec 2 champs pour enregistrer la date et l'heure, ces champs sont de type varchar, pas DATE. Data Structure here et ne regarde pas les noms des champs, j'ai changé ci-dessous dans les querys pour une meilleure compréhension.Données de requête PHP MYSQL entre les champs de date et d'heure HEROKU

J'ai cette requête qui fonctionne:

SELECT 
DISTINCT dates, times, lat, long, ide FROM data 
WHERE ide = 'lcg1234' AND (dates>= '2016-01-27' AND times>='15:00:00') 
AND (dates<= '2016-01-29' AND times<='16:00:00') 
ORDER BY times ASC 

Le problème est quand je change le temps dans la dernière et à une valeur inférieure comme ceci:

SELECT 
DISTINCT dates, times, lat, long, ide FROM data 
WHERE ide = 'lcg1234' AND (dates>= '2016-01-27' AND times>='15:00:00') 
AND (dates<= '2016-01-29' AND times<='01:00:00') 
ORDER BY times ASC 

Il fonctionne pas, pourquoi ce arrivé? toutes les idées sont bienvenues! et désolé pour mon mauvais anglais.

+0

Quelle est l'erreur que vous obtenez? Qu'est-ce qui ne fonctionne pas? – PeterT

+0

Est-ce un problème de données? les données sont-elles présentes pour cette requête? –

+0

L'erreur est lorsque je demande des données entre 2016-01-27 à 15:00:00 et 2016-01-29 à 01:00:00 pas de données, il semble que l'heure n'est pas considérée ici, quand je requête pour les données entre 2016-01-27 à 15:00:00 et 2016-01-29 à 23:00:00 cela renvoie mes données .... pourquoi? – user2697054

Répondre

0

Vous devez combiner la colonne des dates et des heures et créer un champ d'heure de la date personnalisée. Et puis faites des comparaisons.

Vérifiez si la requête suivante fonctionne.

SELECT 
DISTINCT dates, times, lat, long, ide FROM data 
WHERE ide = 'lcg1234' 
AND CONCAT(`dates`,' ',`times`) >= '2016-01-27 15:00:00' 
AND CONCAT(`dates`,' ',`times`) <= '2016-01-29 01:00:00' 
ORDER BY times ASC 
+0

J'ai des données pour cela, l'erreur est lorsque je demande des données entre 2016-01-27 à 15:00:00 et 2016-01-29 à 01:00:00 ne retourne aucune donnée, il ressemble à un deuxième paramètre du temps n'est pas considéré ici, quand je demande des données entre 2016-01-27 à 15:00:00 et 2016-01-29 à 23:00:00 cela fonctionne et retourne mes données en changeant juste l'heure de 01:00 : 00 à 23:00:00 .... pourquoi? – user2697054

+0

@ user2697054: voir la requête mise à jour. –

+0

omg! ça marche bien, merci beaucoup! – user2697054