oracle日期转换报ORA-01810: 格式代码出现两次 01810. 00000 -  "format code appears twice"

描述

执行如下的SQL

select TO_DATE(‘2018-1-9 12:41:00‘,‘yyyy-MM-dd hh24:mm:ss‘) from dual;

然后就报了如下的错误

ORA-01810: 格式代码出现两次

  1. 00000 - "format code appears twice"

    Cause:

    Action:

    select RECEIVEDATE,RECEIVETIME,TO_DATE(concat(RECEIVEDATE,concat(‘ ‘,RECEIVETIME)),‘yyyy-MM-dd hh24:mm:ss‘) from workflow_currentoperator where requestid = 42 and nodeid = 162 ;

原因及解决方法

TO_DATE函数的语法如下:

TO_DATE(char,fmt);

其中char为字符串,fmt为日期格式,如yyyy-mm-dd hh24:mi:ss

对于SQL的语法来说是不区分大小写的,所以日期格式的MM和mm是一样的,在oracle的日期转换中对于月份应该使用MM,对于分钟应该使用MI。sql应该修改为如下:

select TO_DATE(‘2018-1-9 12:41:00‘,‘yyyy-MM-dd hh24:mi:ss‘) from dual;

oracle的时间日期格式如下表:

元素 描述
DD 月的天数(1-31).
YYYY 年份
MM 月份(01-12; 一月 = 01).
HH 时间(12小时制)
HH12 时间(12小时制)
HH24 时间(24小时制)
MI 分钟
SS

这个和java的时间日期格式化是不一样的,java的时间日期格式化如下表:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.format(date);
Letter Date or Time Component Presentation Examples
G Era designator Text AD
y Year Year 1996; 96
Y Week year Year 2009; 09
M Month in year (context sensitive) Month July; Jul; 07
L Month in year (standalone form) Month July; Jul; 07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day name in week Text Tuesday; Tue
u Day number of week (1 = Monday, ..., 7 = Sunday) Number 1
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone RFC 822 time zone -0800
X Time zone ISO 8601 time zone -08; -0800; -08:00

参考

1.https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions203.htm#SQLRF06132

2.https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements004.htm#SQLRF00212

3.java.text.SimpleDateFormat

原文地址:https://www.cnblogs.com/ZiYangZhou/p/8253927.html

时间: 2024-08-13 04:40:01

oracle日期转换报ORA-01810: 格式代码出现两次 01810. 00000 -  "format code appears twice"的相关文章

【Oracle】ORA 01810 格式代码出现两次-转

一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟.select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual; 二.另要以24小时的形式显示出来

ORA-01810格式代码出现两次 的解决方案

今早做一个查询页面时,需要查询两个时间区间的跨度,使用TO_DATE函数,一开始写成了Sql代码 TO_DATE('2014-08-04 00:00:00','YYYY-MM-DD HH:mm:ss') 结果报ORA-01810 格式代码出现两次的错误.后来上网查询后,发现是格式化字符串有问题,其中不应该将某个格式重复两次,否则Oracle就不知道要从哪个占位区间去解析该字段了,正确的格式应该是这样的,用MI来代表分钟 正确Sql代码 :TO_CHAR('2014-08-04 00:00:00'

Oracle转换时间出现的问题:ORA-01810: format code appears twice

Oralce中的to_date()函数用于将字符串转换为日期对象: to_date( string, [ format_mask ] , [ nls_language ] ) string1 要转换的字符串. format_mask 可选项,日期转换格式. nls_language 可选项. 指定用于转换字符串的nls language. [问题]ORA-01810: format code appears twice可能是像Java那样指定日期格式,比如:to_date('2006-06-01

日期格式代码出现两次的错误 ORA-01810

错误的原因是使用了两次MM . 一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 11:11:21','yyyy-MM-dd HH24:mm:ss') from dual;原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟.select to_date('2005-01-01 11:11:21','yyyy-MM-dd HH24:mi:ss') from dual;

Oracle 日期转换

1.日期转换 select to_date('2014-11-27','yyyy-MM-dd') from dual; select to_date('20141127','yyyyMMdd') from dual; select to_date('20141127','yyyy-MM-dd') from dual; select to_date('2004-11-27 00:00:00','yyyy-MM-dd hh24:mi:ss') from dual; select to_date(TR

ora_01810:格式代码出现两次

报这个错误的原因是在转换日期的时候分钟用mm表示了:如下所示 to_date('2016-06-30 16:21:57','yyyy-MM-dd HH24:mm:ss') oracle格式是不区分大小写的,所以MM和mm是一样的 可能会以月份的形式显示.所以 oracle中用了mi来代替MM. to_date('2016-06-30 16:21:57','yyyy-MM-dd HH24:mi:ss') 原文地址:http://bbs.delit.cn/thread-1110-1-1.html 转

ORA-01810:格式代码出现两次解决方法

在写一个sql插入数据库的时候 to_date('20140509131034','yyyyMMddHHmmss')  原因是java中的年月日和oracle中的年月日表示形式不一样 oracle用MI来代表分钟,而不是java中的mm 修改为 to_date('20140509131034','yyyyMMddHHMISS')  然后又报ORA-01849:小时值必须介于1和12之间 因为24小时的形式显示出来要用HH24 修改为 to_date('20140509131034','yyyyM

oracle 日期处理

转载: to_date()与24小时制表示法及mm分钟的显示: 一.在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用“yyyy-MM-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”. select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual; 如:原因是SQL中不区分大小写,MM和mm被认为是相同的

ORACLE日期时间函数

ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02   13:45:25为例)           Year:              yy two digits 两位年                显示值:07        yyy three digits 三位年                显示值:007        yyyy four digits 四位年                显示值:2007                    Month