[英]Date formating with Character field
我有一个字符字段,表示日期为'01-JAN-13'
。 当我用TO_DATE(SUBSTR(DSIS_CC_MASTER.created_ts, 1, 9),'YYYY-MM-DD')
重新格式化时,我得到结果为13-JAN-01
。
如何以YY-MM-DD
格式获取数据。 我是否需要在CASE中写入以将月份更改为数字?
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_CC_MASTER.created_ts, 3, 7)
,您将得到所需的内容。
您将返回一个日期值,但会显示该客户端配置为显示日期。 如果要显式设置格式,请使用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')
但是,如果此查询的使用者期望返回日期类型(例如,进行日期数学运算),则更改返回类型可能会导致问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.