Sql 使用字符字段设置日期格式

Sql 使用字符字段设置日期格式,sql,oracle,date-format,Sql,Oracle,Date Format,我有一个字符字段,表示日期为'01-JAN-13'。当我用重新格式化到日期(SUBSTR(DSIS\u CC\u MASTER.created\u ts,1,9),'YYYY-MM-DD')时,我得到的结果是13-JAN-01 如何以YY-MM-DD格式获取数据。我是否需要在一个案例中写下将月份更改为数字 SELECT dsis_cc_master.created_ts , to_date(substr(dsis_cc_master.created_ts, 1, 9), 'YYYY-M

我有一个字符字段,表示日期为
'01-JAN-13'
。当我用
重新格式化到日期(SUBSTR(DSIS\u CC\u MASTER.created\u ts,1,9),'YYYY-MM-DD')
时,我得到的结果是
13-JAN-01

如何以
YY-MM-DD
格式获取数据。我是否需要在一个案例中写下将月份更改为数字

SELECT dsis_cc_master.created_ts
     , to_date(substr(dsis_cc_master.created_ts, 1, 9), 'YYYY-MM-DD') AS created_month
  FROM traffic_eng.dsis_cc_master
 WHERE dsis_cc_master.created_ts >= to_date('2013-01-01', 'yyyy-mm-dd')
我的结果是

01-JAN-13    13-JAN-01

我正在尝试获取第二列中的
01-01-13
13-01-01

您必须使用日期格式模型和
to_CHAR
函数以所需格式获取结果:

select DSIS_CC_MASTER.created_ts, TO_CHAR(TO_DATE(SUBSTR(DSIS_CC_MASTER.created_ts, 1, 9),'YYYY-MM-DD'), 'DD-MM-YY') as created_month FROM TRAFFIC_ENG.DSIS_CC_MASTER
WHERE DSIS_CC_MASTER.created_ts >= to_date('2013-01-01', 'yyyy-mm-dd')

由于列中的数据已存储为
YYYY-MM-DD
格式,因此实际上您可以只
substr(DSIS\u CC\u MASTER.created\u ts,3,7)
,就可以得到所需的数据。

您将返回一个日期值,该值显示在客户端配置为显示日期的情况下。如果要显式设置格式,请使用
到\u char
返回字符串:

select 
    DSIS_CC_MASTER.created_ts, 
    TO_CHAR(TO_DATE(SUBSTR(DSIS_CC_MASTER.created_ts, 1, 9),'YYYY-MM-DD'),'DD-MM-YY') as created_month 
FROM TRAFFIC_ENG.DSIS_CC_MASTER
WHERE DSIS_CC_MASTER.created_ts >= to_date('2013-01-01', 'yyyy-mm-dd')
但是,您正在更改返回类型,如果此查询的使用者希望返回日期类型(例如,进行日期计算),则可能会导致问题