[英]How can I define the date format mask of the following date format?
我有一列带有以下日期(示例)的日期:
1.5.2018
24.2.2018
6.11.2018
13.10.2018
如果几天或几个月中缺少“ 0”,“ DD.MM.YYYY”格式可以处理吗? 如果没有:如何定义适当的日期格式掩码?
从Oracle有关格式模型的文档中:
外汇
格式准确。 此修饰符为
TO_DATE
函数的字符参数和日期时间格式模型指定完全匹配:
- 字符参数中的标点和加引号的文本必须与格式模型的相应部分完全匹配(大小写除外)。
- 字符参数不能有多余的空格。 没有FX,Oracle将忽略多余的空格。
- character参数中的数值数据必须与格式模型中的相应元素具有相同的位数。 没有
FX
,character参数中的数字可以省略前导零。- 启用
FX
,也可以使用FM
修改器禁用对前导零的检查。
没有FX
格式模型 :
SELECT TO_DATE( '1.5.2018', 'DD.MM.YYYY' ) AS value FROM DUAL;
将正常工作并输出(使用我的NLS_DATE_FORMAT
设置):
VALUE
--------------------
2018-05-01T00:00:00Z
多余空间的组合也是如此:
SELECT TO_DATE( '1 . 5 . 2018', 'DD.MM.YYYY' ) FROM DUAL;
使用FX
格式模型 :
SELECT TO_DATE( '1.5.2018', 'FXDD.MM.YYYY' ) AS value FROM DUAL;
给出:
ORA-01862: the numeric value does not match the length of the format item
指定前导零将起作用:
SELECT TO_DATE( '01.05.2018', 'FXDD.MM.YYYY' ) FROM DUAL;
VALUE
--------------------
2018-05-01T00:00:00Z
但是添加多余的空格将不会:
SELECT TO_DATE( '01 . 05. 2018', 'FXDD.MM.YYYY' ) FROM DUAL;
ORA-01861: literal does not match format string
要取消检查前导零,您还可以使用FM
格式模型 :
SELECT TO_DATE( '1.5.2018', 'FMFXDD.MM.YYYY' ) FROM DUAL;
哪个输出:
VALUE
--------------------
2018-05-01T00:00:00Z
但是该语句不能使用多余的空格
SELECT TO_DATE( '1.5 .2018', 'FMFXDD.MM.YYYY' ) FROM DUAL;
ORA-01861: literal does not match format string
'DD.MM.YYYY'
格式将起作用。 例如:
SQL> with yourData(stringDateCol) as (
2 select '1.5.2018' from dual union all
3 select '01.05.2018' from dual union all
4 select '24.2.2018' from dual union all
5 select '6.11.2018' from dual union all
6 select '13.10.2018' from dual
7 )
8 select to_date( stringDateCol, 'dd.mm.yyyy')
9 from yourData;
TO_DATE(ST
----------
2018-05-01
2018-05-01
2018-02-24
2018-11-06
2018-10-13
SQL>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.