2013-03-29 76 views
0

假設我下表在Oracle中:如何在oracle中查詢日期?

id|orderdatetime (date type)|foodtype (string type) 
1|2013-12-02T00:26:00 | burger 
2|2013-12-02T00:20:00 | fries 

... (假設有許多日期和時間)

假設某人正好有記(日期即「2010-12 -02T00:25:00" )。 即使在那裏沒有特定時間的數據庫條目... 是否有某種方式來查詢數據庫,以便我可以得到具有最接近它的日期時間的行而不會超過日期介意(理想情況下,它會小於或等於)?

(即在這種情況下,sql查詢將返回「薯條」而不是「漢堡」的行,因爲漢堡的時間超過了用戶想到的時間,儘管事實上「漢堡」 。更接近)

回答

2
select x.* from (select id,orderdatetime,foods from orders 
where orderdatetime <= YOURTIME order by orderdatetime desc)x 
where rownum =1 

另一個辦法是:

select * from orders where orderdatetime = (select max(orderdatetime) from orders 
where orderdatetime <= YOURTIME) 
+0

我不認爲最大(ID)會工作。日期不按升序或降序排列,本質上ID是隨機的,但是是唯一的。日期也可以隨機訂購。 – Rolando

+0

你說得對。我沒有注意你的數據集。刪除了第二個解決方案 – Brian

+0

你可以修改你的答案,使它沒有這個假設嗎?或者對訂單應用一些排序? – Rolando