2016-07-24 6 views
0

Ich habe eine messages(id, inserted_at) TabelleAuswählen Zeitbereiche basierend auf Insertion Datum des verglichenen Ergebnisses

ich die N neuesten Nachrichten, deren inserted_at Spalte auswählen möchten ist mit etwa 2 Minuten des Einzel jüngste Meldung.

Ist das möglich?

select * 
from messages 
where inserted_at >= 
     (select max(inserted_at) - interval '90 minute' 
      from messages 
     ) 
order by inserted_at desc 
limit 2 

... und nur das Intervall Ihrer Wahl angeben, und den Grenzwert:

+0

Können Sie Probe liefern Daten und erwartete Ergebnisse? – sgeddes

Antwort

1

Sie könnten mit einem Unter wählen Sie im where Klausel tun.

Beachten Sie, dass die beiden Bedingungen (Datensatzgrenze N, Datumsgrenze) miteinander konkurrieren und Sie möglicherweise weniger Datensätze als N erhalten oder einige Nachrichten ausgeschlossen erhalten, obwohl sie sich innerhalb des Datums-/Zeitlimits befinden.

Siehe SQL fiddle

Wenn Sie bedeuten, dass das Datum/Zeit Zustand eine Minimum Zeitdifferenz sein war, dann drehen sich um den in dem Zustand >=-<=:

select * 
from messages 
where inserted_at <= 
     (select max(inserted_at) - interval '90 minute' 
      from messages 
     ) 
order by inserted_at desc 
limit 2 
+0

Perfekt, danke – Tarlen

Verwandte Themen