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

oracle查询月份问题
有表t
字段regdate char类型
值举例:2012-07-21


如果查询7月份的所有记录

SQL code
select * from t where to_char(regedta,'MM')='7'

出错

------解决方案--------------------
这个问题是你没有将regdate 的类型转换成datetime类型,应该改为:
SELECT * FROM T WHERE TO_CHAR(TO_DATE(REGEDTA,'yyyy/MM/dd HH24:mi:ss'),'MM')='7'
------解决方案--------------------
因为转换成24小时制的关系,后面的月份格式是 XXXX/XX/XX(如:2012/07/13),所以上面的应该在月份后面加个0
------解决方案--------------------
SQL code
select * from t where to_number(to_char(regedta,'MM'))=7
或者select * from t where to_number(to_date(regedta,'MM'))=7