PL/SQL中的日期范围(Oracle)
如果我有一个名为myDate
的日期列的表,其值为2009-08-25 09:00:09.0
。PL/SQL中的日期范围(Oracle)
我要选择所有的行为年08月25,从上午12时00分01秒直到下午11:59:59并没有为8月26日。难道是足够简单地使用条件:
where myDate between Date '2009-08-25' and Date '2009-08-26'
我想之前选择所有的行8月25日,不包括25月我能做:
where myDate < Date '2009-08-25'
,如果你想进行数据全天25并排除所有26,你需要删除26的第一第二:
where myDate >= Date '2009-08-25' and myDate < Date '2009-08-26'
或
where myDate between Date '2009-08-25' and Date '2009-08-26' - interval '1' second
更新 - 小精度:在Oracle中的数据类型DATE
为“日期”类型有或没有时间同时使用。如果你没有时间处理日期,它通常存储在00:00的时间段,也就是午夜。因此,(my_date between '2009-08-25' and '2009-08-26'
)之间的第一个可能会选择两个整天。
通过去除26的第一第二,你保证你不会在不经意间从26
SELECT *
FROM TABLE
WHERE myDate BETWEEN myDate ('08/25/2009', 'MM/DD/YYYY')
AND myDate ('08/26/2009', 'MM/DD/YYYY')
这是真的吗? – cr0ss 2014-04-24 10:44:54
他在括号前忘记了TO_DATE – 2014-10-17 12:37:09
选择行至8月25之间得到的一切,在上午12时00分01秒,直到11 :59:59 PM,包容,试试这个:
Where myDate Between to_Date('yyyymmddhh24miss', '20090825000001')
And to_Date('yyyymmddhh24miss', '20090825235959')
(25日 - 即第一第二(00:00:00)为25的部分,以及你为什么不包括午夜...)
要在8月之前得到一切25,试试这个:
Where myDate < to_Date('yyyymmdd', '20090825')
什么您的26开头的意思是如果不包括 - 在你的第二个查询1/24/60/60 ,它可能有什么问题? – Saobi 2009-08-26 14:16:04
26开始于00:00,所以如果你想排除所有26,你必须明确删除那一秒 – 2009-08-26 14:22:23
是的,它只包含8-26 12:00:00 AM。不是一分钟后。一排正好发生在午夜的可能性很低,所以没关系? – Saobi 2009-08-26 14:29:14