Oracle数据库中有一个时间字段cdsj,我想判断这个时间是否位于上个月的21号和当前月的20号之间,SQL查询语句应该怎么写,请各位大侠指教。

解决方案 »

  1.   

    to:Jinglecat(晓风残月 >> 问题需简洁,错误要详细)
    你的回答和没说一个样,如果我能查到,还用提问?
      

  2.   

    @dqwzh
    1.
    我想我们是否应该先学会如何获取资源,如何学会寻找问题答案的方法?2.
    试问在你开始 Oracle 开发旅程之前,是否阅读过某本 Oracle 开发手册,熟悉 PL/SQL 基本语法,基本用法,如常用的日期函数?现在是否知道存在 
    Oracle Documentation
    http://www.oracle.com/technology/documentation/index.htmlOracle® Database SQL Reference 
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/toc.htm....对于此时间函数相关问题,是否已经找到这么一节?
    Oracle® Database SQL Reference 
    SQL Functions 
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions001.htm#i888933.
    即使不知道 2,那么目前碰到问题,脑海中想到第一“老师”是谁?对于我自己来说,最好的老师是 baidu/google/ ....baidu -> oracle 日期函数
    http://www.baidu.com/s?wd=oracle+%C8%D5%C6%DA%BA%AF%CA%FD&cl=3
    >>>> 随便翻一篇都告诉此问题相关信息当然,似乎没有获取年、月、日的时间(MS SQL Server 有 DatePart(...) 函数可用)那么,我们再baidu -> oracle 获得年
    http://www.baidu.com/s?wd=oracle+%BB%F1%B5%C3%C4%EA&lm=0&si=&rn=10&ie=gb2312&ct=0&cl=3&f=1&rsp=0
    >>>
    获得年、月、日值的问题!!很急!!!!!!!! 
    http://topic.csdn.net/t/20030826/17/2190272.html4.
    当然此问题,地球人都知道,关键是如何获取 上个月21号和这个月20号的两个日期值,加上 3 的信息,那么答案有眉目了try ->SELECT * FROM tbl WHERE cdsj BETWEEN to_date('21-' || to_char(add_months(sysdate,-1), 'mm-yyyy'), 'dd-mm-yyyy') AND to_date('20-' || to_char(sysdate, 'mm-yyyy'), 'dd-mm-yyyy')注:我不知 PL/SQL 中 BETWEEN 是否可以用于 date 类型(MS SQL Server 可以),
    若不行,此日期比较问题,留给 LZ 自己 DIY 了 ^_^5.
    没有环境,4 中代码未测试6.
    我没有任何 Oracle 的实战经验,偶然心血来潮,比较下 Oracle 和其他商业数据库的特点Hope helpful.
      

  3.   

    事实上,此问题,若发到 数据库 板块,我想,得到响应的速度应该很块,毕竟搞 MS东东的,如ASP.NET, 用 Oracle 少...
      

  4.   

    to:Jinglecat(晓风残月 >> 问题需简洁,错误要详细)
    通过你给的这句话:
    SELECT * FROM tbl WHERE cdsj BETWEEN to_date('21-' || to_char(add_months(sysdate,-1), 'mm-yyyy'), 'dd-mm-yyyy') AND to_date('20-' || to_char(sysdate, 'mm-yyyy'), 'dd-mm-yyyy')
    我得到了很大的提示,比我查阅资料快多了,问题解决,谢谢帮忙,给分^_^
      

  5.   

    我的一个项目实例:[本月1号到下月1号之间] (SQL SERVER )不知道对你是否有用.
    (ReceivedTime > DATEADD(mm, 
          DATEDIFF(mm, '1901-01-01', GETDATE()), '1901-01-01')) AND 
          (ReceivedTime < DATEADD(mm, 1 + DATEDIFF(mm, '1901-01-01', GETDATE())