2013-03-09 4 views
0

J'ai une table pour stocker des données à des fins de location de voiture (réservations en attente de réponse). C'est un champ appelé 'initia_datime' (INT, 10) où est stockée la datime initiée de la réservation (je sais déjà que INT 10 n'est pas le moyen le plus efficace, 2038 etc.).dates stockées en unixtime (INT 10) intervalle de vérification

Je voudrais voir les réservations en attente de réponse de plus de 24 heures pour les rapports plus ...

Les exemples suivants travaillent pour moi

SELECT * FROM rentals WHERE rental_flag = 1 AND '".$cur_datetime_unixtime."' >(initiated_datime + 86400) ... WHERE $cur_datetime_unixtime is created in php 

ET

SELECT * FROM rentals WHERE rental_flag = 1 AND unix_timestamp(now()) > (initiated_datime + 86400) 

est-il façon de changer (initié_datime + 86400) avec un code plus efficace? comme: unix_timestamp (started_datime + intervalle de 1 jour)?

Merci d'avance!

Répondre

0

Pas dans le cas général; mais dans ce cas, que l'inégalité est équivalente à:

SELECT * FROM rentals WHERE rental_flag = 1 
AND unix_timestamp(now() - INTERVAL 1 DAY) > initiated_datime 
+0

merci pour votre réponse ... pouvez-vous s'il vous plaît expliquer votre réponse? unix_timestamp (now() - INTERVAL 1 DAY)> rejected_datime est égal à initié_datime + 1jour> started_datime? –

+0

Vous comparez l'horodatage actuel à 'initié_datime' plus 86400 secondes (== 1 jour). C'est la même chose que de comparer "l'horodatage actuel, il y a 1 jour" à "started_datime" directement. – fenway

+0

merci! fonctionne très bien! –

0

Le moyen le plus efficace de résoudre ce problème est de remplacer vos colonnes par datetime. Vous pouvez facilement utiliser les fonctions date/time pour manipuler votre filtre.

+0

vrai ... mais se fera à l'avenir –

Questions connexes