Sql 如何在oracle中查询日期?

Sql 如何在oracle中查询日期?,sql,oracle,Sql,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。 即使没有包含特定时间的数据库条目。。。 是否有某种方法可以查询数据库,这样我就可以得到日期时间最接近的行,而不必提前考虑日期,理想情况

假设我在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。 即使没有包含特定时间的数据库条目。。。 是否有某种方法可以查询数据库,这样我就可以得到日期时间最接近的行,而不必提前考虑日期,理想情况下,它将小于或等于

i、 e.在这种情况下,sql查询将返回薯条而不是汉堡的行,因为汉堡的时间已经超过了用户所想的时间,尽管汉堡的时间更近了

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)

我认为maxid不起作用。日期不是按升序或降序排列的,本质上id是随机的,而是唯一的。日期也可能是随机安排的。你说得对。我没有注意你的数据集。删除了第二个解决方案您能否修改您的答案,使其不具有该假设?或者对orderdates应用一些排序?@Damasusi Updated-当然,若有多个匹配的日期,您将在第二个场景中得到多行。而第一个将从匹配行中随机生成一行,如果它是主键,并且没有其他索引,则可能是id最小的行。但是没有问题,我试着用2010-12-02T00:25:00代替YOURTIME,结果得到一条ORA000900无效SQL语句