SUBSTR(字段, 0, 6)出来的结果是正确的,也没有月份的数据大于12. 但是很奇怪,"select TO_DATE(SUBSTR(字段,0,6),'YYYYMM') from 表名" 加了个where 条件后,就能够出来数据了,但数据的显示格式是:'YYYY/MM/DD',而非'YYYYMM',也就是说指定'YYYYMM'格式根本没有效果,出来的是to_date()函数默认的数据. 我检查了所有的数据,都没有问题.
如果你的日期是这样的话:'16-Jan-2006' 就用select TO_DATE(SUBSTR(字段, 1, 6),'YYYY-MM','NLS_DATE_LANGUAGE= American') from 表名'16-十月-2006'的话就用:select TO_DATE(SUBSTR(字段, 1, 6),'YYYY-MM','NLS_DATE_LANGUAGE= SIMPLIFIED CHINESE') from 表名
select TO_DATE(SUBSTR(字段,0,6),'YYYYMM') from 表名 =============================== 当然不是你想要的格式,to_date是将字符转化成日期,select的话它会按默认的格式输出,你要按你的输出,必须这样select to_char(TO_DATE(SUBSTR(字段,0,6),'YYYYMM'),'yyyymm') from 表名 这样表达才能得到你要的输出
select to_char(TO_DATE(SUBSTR(字段,0,6),'YYYYMM'),'yyyymm') from 表名 =========================================== 还是不行,仍然提示我指定月份无效,我快要崩溃了.
但是很奇怪,"select TO_DATE(SUBSTR(字段,0,6),'YYYYMM') from 表名" 加了个where 条件后,就能够出来数据了, ================ 说明表中有不符合的数据
你把SUBSTR(字段, 0, 6)的結果Select出來看看就知道了,要不就是最後兩位大於12(月份不能大於12麼。
如果不是這個問題,試試to_date(string, 'YYYY/MM')
但是很奇怪,"select TO_DATE(SUBSTR(字段,0,6),'YYYYMM') from 表名" 加了个where 条件后,就能够出来数据了,但数据的显示格式是:'YYYY/MM/DD',而非'YYYYMM',也就是说指定'YYYYMM'格式根本没有效果,出来的是to_date()函数默认的数据.
我检查了所有的数据,都没有问题.
===============================
当然不是你想要的格式,to_date是将字符转化成日期,select的话它会按默认的格式输出,你要按你的输出,必须这样select to_char(TO_DATE(SUBSTR(字段,0,6),'YYYYMM'),'yyyymm') from 表名
这样表达才能得到你要的输出
===========================================
还是不行,仍然提示我指定月份无效,我快要崩溃了.
================
说明表中有不符合的数据