2015-01-22 2 views
0

Моя таблица выглядит следующим образом:MySQL Получить значение на час В определенный день

(int)Epoch, (string)Price 
12345, 123.22 
12346, 111.33 
12347, 119.44 
13211, 100.44 
13255, 120.05 
… 

Мне нужно, чтобы иметь возможность получить значение цен на данный час и дату. Пример: GetPriceAt («12/01/2015 16:00»)

Если есть значение точно в 12/01/2015 16:00, то верните его, если нет возврата предыдущее значение в таблице , Пример:

12/01/2015 13:00, 123.22 
12/01/2015 13:01, 111.33 
12/01/2015 13:50, 119.44 
12/01/2015 14:10, 100.44 
12/01/2015 14:15, 120.05 

GetPriceAt ("12/01/2015 14:00") - вернет 119.44 (цена от 13:50)

GetPriceAt ("12/01/2015 13:00") - вернется 123.22 (у нас был этот)

Как я могу обратиться к MySQL? Большое спасибо

+0

Для случая 'GetPriceAt ("12/01/2015 16:00")' не должны результирующая цена будет '120.05' вместо из 119? –

+0

true, исправление. – PeeS

+1

там вы идете ['demo'] (http://www.sqlfiddle.com/#!2/e2d05d/4) –

ответ

0

(не красиво и не испытанные)

select * from 
(select * from <your table> order by <date column> desc) as q0 
where <date column> <= <some value> limit 1 
+0

Зачем нужен подзапрос? Просто используйте 'select * from table where date <= 'datestamp' order by date desc limit 1' – Phylogenesis

+0

Overkill - просто хотел удостовериться, что даты были в правильном порядке. – ethrbunny

+0

Также - OP хочет' <= ', а не' > ' – ethrbunny

Смежные вопросы