如何在Oracle中隐藏字符串格式(例如8月17日)

时间:2018-11-07 04:02:02

标签: oracle plsql

我有一张表,并且其中一个字段是varchar2数据类型,它以字符串格式存储某些日期,例如Aug 17,Sep 18等。我想根据实际日期而不是字母对该字段进行排序,如何我可以将这些值转换为日期吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用TO_DATE函数编写'Mon YY'格式,因为第二个参数包括确定格式的语言,并order by。 (感谢@Wernfried Domscheit指出)

SELECT TO_DATE('Aug 17','Mon RR', 'nls_date_language = american')
FROM DUAL

这是一个样本

with cte as (
    SELECT 'Aug 17' dt
    FROM DUAL
    UNION ALL
    SELECT 'Sep 18'
    FROM DUAL
)

select To_char(TO_DATE(dt,'Mon RR', 'nls_date_language = american'),'Mon YY')
from cte
order by TO_DATE(dt,'Mon RR', 'nls_date_language = american') desc

sqlfiddle