2016-11-06 5 views
0

Was ich versuche zu erreichen ist, greifen Daten aus der Datenbank, abhängig von der Zeit.MySQLi Auswahl zeitbasierter Daten

Zum Beispiel kann ich mehrere prices für einen Artikel haben, und ich möchte, dass der neue Preis basierend auf der Uhrzeit und Datum wirksam wird. So kann ich Preisänderungen im Voraus planen.

id link_id datetime    price 
------------------------------------------- 
2 11  2016-11-03 00:00:00 1020 
3 11  2016-11-03 01:00:00 1050 
4 11  2016-11-03 03:00:00 1090 

Können sagen, die Zeit ist 2016-11-03 00:59:00, wenn ein Benutzer den db fragt sie werden sich der price-1020. Aber wenn sie die DB eine Minute später bei 2016-11-03 01:00:00 abfragen, sollten sie price-1050 bekommen.

Habe dieses WHERE datetime < UTC_TIMESTAMP() versucht, aber das löst mein Problem nicht. Außerdem muss nur ein Eintrag ausgewählt werden, dieser wählt mehrere aus.

Gibt es einen Weg MySQLi kann dies tun?

+0

Bearbeiten Sie Ihre Frage und zeigen Sie die gesamte Abfrage. –

+0

Ich habe eine neue Frage gestellt, wo Sie die gesamte Abfrage sehen können: http://stackoverflow.com/questions/40450332/mysqliti-time-based-subqueries @GordonLinoff – Borsn

Antwort

1

Wenn Sie nur für einen Artikel suchen, würde ich so etwas wie dies erwartet:

select p.* 
from prices p 
where p.item_id = $item_id and -- however you are representing items 
     p.datetime <= now() -- or UTC Timestamp if that is how the date/time is represented 
order by p.datetime desc 
limit 1; 

ich spekulieren könnte, dass „link_id“ auf „Elemente“ bezeichnet.

+0

Ich kann nicht begrenzen ... Ich habe verlassen verbindet und dies zielt auf mehrere Ergebnisse ab. Was ist ein Weg ohne einen Join? 'link_id' tut dies aber eine sehr vereinfachte Version meiner Abfrage. – Borsn

+0

@Borsn. . . Es ist nur möglich, die gestellte Frage zu beantworten. Sie sollten * eine andere * Frage stellen, die der Abfrage, die Sie tatsächlich haben, ähnlicher ist. –