关于oracle:SQL错误:ORA-01861:文字与格式字符串01861不匹配

SQL Error: ORA-01861: literal does not match format string 01861

我正在尝试将数据插入到现有表中并不断收到错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
INSERT INTO Patient  
(
  PatientNo,
  PatientFirstName,
  PatientLastName,
  PatientStreetAddress,
  PatientTown,
  PatientCounty,
  PatientPostcode,
  DOB,
  Gender,
  PatientHomeTelephoneNumber,
  PatientMobileTelephoneNumber
)
VALUES
(
  121,
  'Miles',
  'Malone',
  '64 Zoo Lane',
  'Clapham',
  'United Kingdom',
  'SW4 9LP',
  '1989-12-09',
  'M',
  02086950291,
  07498635200
);

错误:

1
2
3
4
5
6
7
8
9
10
11
Error starting at line : 1 IN command -
INSERT INTO Patient (PatientNo,PatientFirstName,PatientLastName,PatientStreetAddress,PatientTown,PatientCounty,PatientPostcode,DOB,Gender,PatientHomeTelephoneNumber,PatientMobileTelephoneNumber)
VALUES (121, 'Miles', 'Malone', '64 Zoo Lane', 'Clapham', 'United Kingdom','SW4 9LP','1989-12-09','M',02086950291,07498635200)
Error report -
SQL Error: ORA-01861: literal does NOT MATCH format string
01861. 00000 - "literal does not match format string"
*Cause:    Literals IN the INPUT must be the same LENGTH AS literals IN
           the format string (WITH the exception OF LEADING whitespace).  IF the
          "FX" modifier has been toggled ON, the literal must MATCH exactly,
           WITH no extra whitespace.
*Action:   Correct the format string TO MATCH the literal.

只是不确定为什么这种情况一直在发生,我目前正在学习SQL,对您的任何帮助将不胜感激!


尝试将日期'1989-12-09'的字符串文字替换为TO_DATE('1989-12-09','YYYY-MM-DD')


您用于日期的格式与Oracle的默认日期格式不匹配。

默认安装的Oracle数据库将DEFAULT DATE FORMAT设置为dd-MMM-yyyy

使用功能TO_DATE(dateStr, formatStr)或仅使用dd-MMM-yyyy日期格式模型。


您还可以更改会话的日期格式。例如,这在Perl DBI中很有用,其中to_date()函数不可用:

1
ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD'

您也可以永久设置默认的nls_date_format:

1
ALTER SYSTEM SET NLS_DATE_FORMAT='YYYY-MM-DD'

在Perl DBI中,您可以使用do()方法运行以下命令:

1
$db->do("ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD');

http://www.dba-oracle.com/t_dbi_interface1.htm
https://community.oracle.com/thread/682596?start=15


n


n


如果您提供正确的日期格式,它应该可以正常工作,请重新检查一次,如果您在插入值中指定了正确的日期格式


尝试使用格式为dd-mon-yyyy,例如02-08-2016的格式应为\\ '08 -feb-2016 \\'。