w jaki sposób można na podstawie daty:
19:20:13 2010-08-06
odnaleźć poprzedni i następny wpis za pomocą zapytania postgresie.
Datę jak i godzinę trzymam w tabeli w polu tabelka_data(DATE), tabelka_czas (TIME).

Ale to zapytanie zwróci fałszywe wyniki, ponieważ tabelka_czas obetnie nam prawidłowe wyniki jeśli rekordy kolejne będą z różnych dni, bo tabelka_czas nam wywali rekordy z następnego dnia sprzed godziny tabelka_czas, choć jakieś mogą być. Nie można także z WHERE wyrzucić sprawdzania po tabelka_czas bo wybierze wszystkie rekordy z tego dnia... Także wcześniejsze/późniejsze od niego. Rozbicie tego czasu na 2 kolumny było moim zdaniem nieprzemyślane trochę.
SELECT kolumny FROM tabela WHERE tabelka_data >= $data_dziś_z_php AND tabelka_czas >= $czas_teraz_z_php ORDER BY tabelka_data ASC, tabelka_czas ASC LIMIT 1 UNION SELECT kolumny FROM tabela WHERE tabelka_data <= $data_dziś_z_php AND tabelka_czas <= $czas_teraz_z_php ORDER BY tabelka_data DESC, tabelka_czas DESC LIMIT 1
cojack=> \d+ test TABLE "public.test" COLUMN | Type | Modifiers | Storage | Description ------------------+-----------------------------+---------------------------------------------------+----------+------------- id | integer | NOT NULL DEFAULT NEXTVAL('test_id_seq'::regclass) | plain | tresc | text | | extended | datadodania | timestamp without time zone | NOT NULL | plain | dataaktualizacji | timestamp without time zone | DEFAULT now() | plain | Has OIDs: no cojack=> SELECT * FROM test; id | tresc | datadodania | dataaktualizacji ----+-----------+----------------------------+---------------------------- 1 | terefere | 2010-08-09 19:58:47.321543 | 2010-08-09 19:58:47.321543 2 | terefere2 | 2010-08-09 19:58:50.654082 | 2010-08-09 19:58:50.654082 3 | terefere3 | 2010-08-09 19:58:53.331668 | 2010-08-09 19:58:53.331668 4 | terefere4 | 2010-08-09 19:58:56.653892 | 2010-08-09 19:58:56.653892 5 | terefere5 | 2010-08-09 19:58:59.304039 | 2010-08-09 19:58:59.304039 6 | terefere6 | 2010-08-09 19:59:02.334028 | 2010-08-09 19:59:02.334028 7 | terefere7 | 2010-08-09 19:59:05.951644 | 2010-08-09 19:59:05.951644 8 | terefere8 | 2010-08-09 19:59:09.222648 | 2010-08-09 19:59:09.222648 (8 rows) SELECT id, ( SELECT id FROM test AS t2 WHERE t2.datadodania > t1.datadodania ORDER BY datadodania ASC LIMIT 1 ), ( SELECT id FROM test AS t3 WHERE t3.datadodania < t1.datadodania ORDER BY datadodania DESC LIMIT 1 ) FROM test AS t1 WHERE t1.id = 4;