日期:2014-05-17  浏览次数:20806 次

oracle如何获取某个时间段的语句
大家好我是oracle初学者,有一个会员信息表, 我想查询当月或者两个月内过生日的会员,这条语句该如何写,表名:huiyuan_xinxi
会员生日字段是birday_sr。谢谢。
------解决方案--------------------
重复了,楼主。。
本月内的:
SELECT * FROM huiyuan_xinxi WHERE  to_char(birday_sr,'yyyy-mm')=to_char(SYSDATE,'yyyy-mm')

两个月内的:不知道前两个月算不算,先说不算的:
SELECT *
  FROM HUIYUAN_XINXI
 WHERE TO_CHAR(BIRDAY_SR, 'yyyy-mm-dd') <=
       TO_CHAR(ADD_MONTHS(SYSDATE, 2), 'yyyy-mm-dd')
   AND TO_CHAR(BIRDAY_SR, 'yyyy-mm-dd')>=to_char(SYSDATE,'yyyy-mm-dd')

如果两个月以前也算的话:
SELECT *
  FROM HUIYUAN_XINXI
 WHERE TO_CHAR(BIRDAY_SR, 'yyyy-mm-dd') <=
       TO_CHAR(ADD_MONTHS(SYSDATE, 2), 'yyyy-mm-dd')
   AND TO_CHAR(BIRDAY_SR, 'yyyy-mm-dd')>=to_char(add_months(SYSDATE,-2),'yyyy-mm-dd')

主要使用的函数就是add_months函数
------解决方案--------------------
不晓得楼主说的两个月是相对本月的还是当天的
下面是相对于本月的前后两个月的数据

select * from huiyuan_xinxi 
where birday_sr between 
trunc(add_months(sysdate,-2),'mm') and last_day(add_months(sysdate,2))