我有一个varchar值2017年3月1日,我需要作为2017年3月1日在pl / sql中的日期

时间:2016-10-31 14:58:29

标签: oracle plsql

从双重

选择TO_DATE('2017年3月1日','DD MON YYYY')

可以选择SELECT TO_DATE(2017年3月1日','DD MON YYYY'),不喜欢'st'

3 个答案:

答案 0 :(得分:1)

我认为你需要像regex这样的东西:

SELECT TO_DATE(
    regexp_replace('1st March 2017','^(\d+)\w+','\1')
,'DD MON YYYY') from dual

答案 1 :(得分:1)

唉,你不能直接这样做:https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#BABGDDFB

关于日期格式元素后缀的注释:

  • 当您将其中一个后缀添加到日期时间格式元素时,返回值始终为英语。

  • 日期时间后缀仅对格式输出有效。您无法使用它们将日期插入数据库。

这实际上意味着它们仅与to_char()一起将日期转换为字符串;他们不能使用to_date()将字符串转换为日期。

所以你必须玩脏伎俩 - 也许是regexp_replace来摆脱st。就像迈克尔已经表现出来的那样。

答案 2 :(得分:0)

希望这是你的答案

SELECT TO_CHAR(to_date('1st march 2017','dd"st" month yyyy'),'dd-mon-yyyy') "Date"
FROM dual;

日期

01-MAR-17

MyStream = new FileStream(PDFDirectory, FileMode.Create);

日期

01-MAR-2017