Oracle判断一个时间是否在两个字符串时间内

我现在有

String a="2013-10-15"
String b="2013-10-30"
我数据库存了个 date型为‘2013-10-10 HH:mm:ss’ 由于他也是2013年10月份 虽然是10号 不在上面2个字符串的时间内,

我要的结果就是只要年度和月份 符合就要查出来,怎么写,

需要将时间转成字符串,再判断。

如emp表中有如下数据:

现要查hiredate是否在1981年1月1日和1981年5月1日之间。可用如下语句:

select * from emp where to_char(hiredate,'yyyy-mm-dd') between '1981-01-01' and '1981-05-01';

查询结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-09-09
把字符串,格式化为日期, 然后去和 表里面的列去做比较.

例如:

WHERE
表.DETE列 >= TRUNC( TO_DATE( 外部传入的开始时间, 'YYYY-MM-DD' ), 'MM')
AND 表.DETE列 < ADD_MONTHS
(TRUNC( TO_DATE( 外部传入的结束时间, 'YYYY-MM-DD' ), 'MM'), 1)

注:
第一个
表.DETE列 >= TRUNC( TO_DATE( 外部传入的开始时间, 'YYYY-MM-DD' ), 'MM')

是大于等于 开始时间的那个月的第一天。

第二个
表.DETE列 < ADD_MONTHS
(TRUNC( TO_DATE( 外部传入的结束时间, 'YYYY-MM-DD' ), 'MM'), 1)
是 小于 结束时间下一个月的第一天。本回答被提问者采纳
第2个回答  推荐于2018-03-13
select * from 表 where to_char(时间,'yyyy-mm-dd') between a and b
这个取出来的是在a和b之间的时间。
如果你要年度和月份符合的,你得告诉我符合的年度和月份是多少,如果是2013-10的话:
select * from 表 where to_char(时间,'yyyy-mm) ='2013-10'本回答被网友采纳
第3个回答  2013-10-31
trunc(date型字段名,'mm')就能把date型字段截取到10月份
相似回答