我想查找本月的新增的数据,现在的SQL语句是:
SELECT * FROM TEST1 WHERE ((TO_CHAR(CTIME,'mm')-TO_CHAR(SYSDATE,'mm'))=0) ;可是这样有问题,如果是明年的本月再次查找时,今年本月的数据也会出来,应该如何查询呢。
呵呵,还有本周的数据
SELECT * FROM TEST1 WHERE ((TO_CHAR(CTIME,'mm')-TO_CHAR(SYSDATE,'mm'))=0) ;可是这样有问题,如果是明年的本月再次查找时,今年本月的数据也会出来,应该如何查询呢。
呵呵,还有本周的数据
解决方案 »
- Oracle创建用户的奇怪问题?等待高手解惑
- 新手,求存储过程,在线等,谢谢!
- 如果更改表空间
- ##100分!!!高手,帮忙改一下这段SQL文
- 关于外联,(+) 到底是怎么回事呀?急!!!!
- 急急急:ORACLE73如何在WIN2000下正确安装,高分相送,不够可以再给。
- 不幸删除system账号,急急急急急!
- ORA-12154 TNS:Could not resolve service name错误的原因是什么,解决方法!
- oracle 9i x64 版本 是不是只支持 安腾处理器啊?
- 请教一下各位大牛,这段sql该如何优化?(附执行计划)
- ORACLE分不清哪个是系统表哪个是用户表,应该如何解决这个问题
- 用scott/tiger进入sqlplus,说用户锁定
这样应该就可以了啊
即你的语句效果如下:
SELECT * FROM TEST1 WHERE to_char(ctime,'mm')=to_char(sysdate,'mm')
但是实际上应该采用如下语句
SELECT * FROM TEST1 WHERE to_char(ctime,'yyyymm')=to_char(sysdate,'yyyymm')
FROM TEST1
WHERE ctime >= LAST_DAY(ADD_MONTH(SYSDATE,-1))+1
AND ctime < LAST_DAY(SYSDATE)+1
SELECT * FROM TEST1
WHERE CTIME between to_date(to_char(sysdate,'yyyymm'),'yyyymm') and sysdate
或(如果你不太介意效率)SELECT * FROM TEST1
WHERE to_char(CTIME,'yyyymm')=to_char(sysdate,'yyyymm')
select * from test1
where ctime between trunc(sysdate,'mm') and sysdate
如果不是本月
select * from test1
where ctime >=to_date('2006-01-01','yyyy-mm-dd') and
ctime < to_date('2006-02-01','yyyy-mm-dd')