如何用sql取到3个月的数据

antony0203 2008-01-09 10:48:40
比如数据库有个字段 yearMonth
都是2007-01,2007-02,2007-03,2007-05这样的数据
程序里传入参数2007-03
我要把yearMonth等于2007-01,2007-02,2007-03的三条数据搜出来,sql的where条件怎么写
...全文
144 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiyang5530 2012-03-06
  • 打赏
  • 举报
回复
CREATE TABLE MYTEST(YEARMONTH NVARCHAR2(30));


DELETE MYTEST;
INSERT INTO MYTEST SELECT '2007-01' FROM DUAL
UNION SELECT '2007-02' FROM DUAL
UNION SELECT '2007-03' FROM DUAL
UNION SELECT '2007-05' FROM DUAL
UNION SELECT '2006-12' FROM DUAL;

SELECT * FROM (
SELECT YEARMONTH FROM MYTEST
WHERE YEARMONTH <= '2007-03' //可以换成传递的参数
ORDER BY YEARMONTH DESC
)
WHERE ROWNUM <= 3;
chenyifei211 2008-04-29
  • 打赏
  • 举报
回复
select * from emp where hiredate between trunc(to_date('1981-3','yyyy-mm'),'year') and to_date('1981-3','yyyy-mm');
hyrongg 2008-01-09
  • 打赏
  • 举报
回复
SQL> CREATE TABLE MYTEST(YEARMONTH NVARCHAR2(30));

Table created

SQL> INSERT INTO MYTEST SELECT '2007-01' FROM DUAL
2 UNION SELECT '2007-02' FROM DUAL
3 UNION SELECT '2007-03' FROM DUAL
4 UNION SELECT '2007-05' FROM DUAL;

4 rows inserted

SQL> SELECT * FROM MYTEST
2 WHERE YEARMONTH=TO_CHAR(ADD_MONTHS(TO_DATE('2007-03','YYYY-MM'),-1),'yyyy-mm')
3 OR YEARMONTH=TO_CHAR(ADD_MONTHS(TO_DATE('2007-03','YYYY-MM'),-2),'yyyy-mm')
4 OR YEARMONTH='2007-03';

YEARMONTH
------------------------------------------------------------
2007-01
2007-02
2007-03
fxianxian 2008-01-09
  • 打赏
  • 举报
回复
WHERE yearMonth BETWEEN '2007-03' AND TO_CHAR(ADD_MONTHS(to_date('200703','yyyy-mm'),-2)
fxianxian 2008-01-09
  • 打赏
  • 举报
回复
如果yearMonth 是字符型的話就
WHERE yearMonth IN (TO_CHAR(ADD_MONTHS(to_date('200703','yyyy-mm'),-1),'YYYY-MM'),ADD_MONTHS(to_date('200703','yyyy-mm'),-2),'YYYY-MM'),'2007-03')
多壮志 2008-01-09
  • 打赏
  • 举报
回复
这个只要简单的修改语句即可.
譬如表格叫Ytab,
select * from Ytab where YearMonth bwtween iYearMonth
and to_char(add_months(to_date(iYearMonth,'yyyy-mm'),-2),'yyyy-mm');

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧