0
Я использую PostgreSQL 9.5 и у меня есть таблица вроде этого:Ближайшие даты и времени для PostgreSQL 9.5
CREATE TABLE tracks (
track bigserial NOT NULL,
time_track timestamp,
CONSTRAINT pk_aircraft_tracks PRIMARY KEY (track)
);
Я хочу, чтобы получить трек для ближайшего значения DateTime с помощью SELECT, оператора. например, если у меня есть:
track datatime
1 | 2016-12-01 21:02:47
2 | 2016-11-01 21:02:47
3 |2016-12-01 22:02:47
Для ввода datatime 2016-12-01 21:00, трек 2.
Я foud из Is there a postgres CLOSEST operator? подобного Queston для целого числа. Но она не работает с datatime или PostgreSQL 9.5:
SELECT * FROM
(
(SELECT time_track, track FROM tracks WHERE time_track >= now() ORDER BY time_track LIMIT 1) AS above
UNION ALL
(SELECT time_track, track FROM tracks WHERE time_track < now() ORDER BY time_track DESC LIMIT 1) AS below
)
ORDER BY abs(?-time_track) LIMIT 1;
Ошибка:
ERROR: syntax error at or near "UNION"
LINE 4: UNION ALL
'AS above' и' AS ниже 'является избыточным. – Abelisto