首页 > 解决方案 > 如何在sql中的oracle数据库表中从月份名称中选择值

问题描述

我想将我的数据库表日期列逐月计算,并想逐月计算数据但是,我一次又一次地收到此错误

SQL> desc fac_cus_chd
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 FDC                                       NOT NULL VARCHAR2(9)
 WHDATE                                    NOT NULL DATE
 SL_NO                                     NOT NULL NUMBER(3)
 ITEMCODE                                  NOT NULL VARCHAR2(11)
 DECCODE                                   NOT NULL VARCHAR2(15)
 GRADE                                     NOT NULL VARCHAR2(1)
 QTY                                       NOT NULL NUMBER(9,2)
 UNIT                                      NOT NULL VARCHAR2(6)
 CARTON                                             VARCHAR2(5)
 UPRICE                                             NUMBER(9,2)
 UPT                                                VARCHAR2(1)
 CARTON_DET                                         VARCHAR2(5)

SQL> select SUM(QTY)
     from fac_cus_chd
     where whdate between to_date(to_char('01-JAN-2019', 'DD-MM-YYYY'), 'Month') AND  to_date(to_char('31-DEC-2019', 'DD-MM-YYYY') ;
  2  /
select to_date(to_char('WHDATE', 'DD-MM-YYYY'), 'Month') from fac_cus_chd
                       *
  ERROR at line 1:
  ORA-01722: invalid number
 SQL>

我想要像这样的价值

Month         Qty 
Jan           200000
Feb           33,0000
Mar           34,0000 
APR            32293
May           242434
JUN            24242
JUL             24234
AUG            232423
SEP            242432
OCT            232342
NOV           33423
DEC           3233333 

标签: sqldatabaseoracleoracle-sqldeveloperoracle-sql-data-modeler

解决方案


删除包含WHDATE. TO_DATE() 也不会直接转换列,而是以DD-MM-YYYY 下面给出的格式读取数据,这样可以确保像这样读取数据并转换为 oracle 的默认日期格式

     TO_DATE(WHDATE, 'DD-MM-YYYY')


     TO_CHAR(WHDATE, 'MON')
       //this will give the desired

推荐阅读