ORA-01843:在oracle中插入日期时不是有效月份

时间:2013-01-03 11:19:22

标签: oracle date insert

我正在尝试在oracle数据库中插入一行,当我尝试使用日期时,我在标题中有错误。 我的约会日期为DD/MM/YYYY HH:MM:SS(示例25/01/2013 12:07:19

编辑以便更好地解释: 我有一个Android应用程序,并希望通过PHP在oracle数据库中插入一行 在Php我有:

$sqlString = sprintf("INSERT INTO GUASTI (%s, %s, %s, %s, %s, %s) 
                      VALUES ('%s', '%s', '%s', '%s', '%s', '%s')"
                      ,'guasto','tipo','data', 'localita', 'indirizzo_id', 'utente_id',
                       $array['guasto'], $array['tipo'], $array['data'], $array['localita'], $idUtenti, $idIndirizzo);

其中$array['data']25/01/2013 12:07:19

P.S。我知道那里存在安全问题,但现在不是问题。

3 个答案:

答案 0 :(得分:6)

MM是一个月。使用MI分钟。

你有

HH:MM:SS

每次会议记录大于12时都会触发错误,因为您要告诉Oracle将其解释为几个月。

你也在没有am / pm的情况下使用HH(在你的例子中你只使用了12)。如果您使用的是24格式,请使用HH24

DD/MM/YYYY HH24:MI:SS

或者如果你想要12小时格式

DD/MM/YYYY HH:MI:SSAM

然后

02/01/2013 07:42:00am

修改

您正在使用默认格式MM / DD / YYYY(美国标准)插入日期:25不是有效月份。您可以使用TO_DATE功能

'TO_DATE(' . $array['data'] . ', DD/MM/YYYY HH24:MI:SS)'

答案 1 :(得分:4)

使用TO_DATE('20 / 08/2012 09:00:00','DD / MM / YYYY HH24:MI:SS')插入日期以获取更多详情,请参阅链接Oracle Error

答案 2 :(得分:0)

欲了解更多信息:

定义了以下模式字母(从'A'到'Z'和从'a'到'z'的所有其他字符都是保留的):

信函日期或时间组件演示示例

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