数码资讯
如何解决ora-01843和nls_date_format问题
在Oracle SQL WHERE子句,字符型参数引入到'19-11 - 08,使它能直接与日期型或日期相同类型的转换。 如果输入的字符格式与nsl_date_format一致,它不能直接转换,否则ora-01861错误将被报告。如果转换是不正确的,ora-01843或其他错误可能会报告。 例如:
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
在Oracle SQL WHERE子句,字符型参数引入到'19-11 - 08,使它能直接与日期型或日期相同类型的转换。
如果输入的字符格式与nsl_date_format一致,它不能直接转换,否则ora-01861错误将被报告。如果转换是不正确的,ora-01843或其他错误可能会报告。
例如:
Trc code
SQL >
复制代码代码如下所示:
选数(*),从dba_objects创建> to_date('2008-12-01);
select count(*)从哪里创造dba_objects > to_date('2008-12-01)
第一行出错:
ora-01861:文本和格式字符串不匹配
TRC的代码
SQL >
复制代码代码如下所示:
select count(*)从哪里dba_objects创建> to_date('19-11月08,'mm-dd—
yyyy);
select count(*)从哪里dba_objects创建> to_date('19-11月08,'mm-dd-yyyy
)
第一行错了:
ora-01843:无效的月
这个错误发生在当一个字符串或一个错误认定格式字符串测试。
使用to_date转换格式字符串是mainly'dd-mon-rr ' / 'dd-mon-rrrr'or'yyyy-mm-dd ' / 'yy-mm-dd。
如果可以识别,正确的结果应该是这种情况。
SQL >
复制代码代码如下所示:
select count(*)从哪里创造dba_objects > '19-11 - 08;
计数(*)
----------
四千一百九十九
这种格式是会话的nls_date_format参数值有关。
复制代码代码如下所示:
选择sys_context('userenv ','nls_date_format ')DF,sys_context('userenv ','nls_date_language ')DL从双
DF DL
----------------------------------------
dd-mon-rr简体中文
我们在会话级别修改这个参数的值。
SQL >改变会话设置nls_date_format = 'yyyy-mm-dd;
会话已更改。
SQL >
复制代码代码如下所示:
select count(*)从哪里创造dba_objects > '19-11 - 08;
select count(*)从哪里创造dba_objects > '19-11 - 08
第一行错了:
ora-01861:文本和格式字符串不匹配
在这种方式中,正确的操作是错误的。可以使用符合nls_date_format格式字符串。
SQL >
复制代码代码如下所示:
select count(*)从dba_objects在创建'2008-12-01>;
这个参数也是应用环境相关的,和一些应用程序自动修改参数值。因此,测试工作最好是在sqlplus执行。
此参数在数据库级别的值是固定的,如下所示:
TRC的代码
SQL >
复制代码代码如下所示:
SELECT * FROM V nls_parameters美元;
参数值
----------------------------------------------------------------------
nls_language简体中文
中国nls_territory
nls_currency。
中国nls_iso_currency
nls_numeric_characters。
nls_calendar公历
nls_date_format dd-mon-rr
nls_date_language简体中文
nls_characterset zhs16gbk
nls_sort二进制
nls_time_format hh.mi.ssxff是
nls_timestamp_format dd-mon-rr hh.mi.ssxff是
nls_time_tz_format hh.mi.ssxff是TZR
nls_timestamp_tz_format dd-mon-rr hh.mi.ssxff是TZR
nls_dual_currency。
nls_nchar_characterset al16utf16
nls_comp二进制
nls_length_semantics字节
nls_nchar_conv_excp假
已经选了19行。
nls_date_language是简体中文所以月在中国像十一月。
如果输入的字符格式与nsl_date_format一致,它不能直接转换,否则ora-01861错误将被报告。如果转换是不正确的,ora-01843或其他错误可能会报告。
例如:
Trc code
SQL >
复制代码代码如下所示:
选数(*),从dba_objects创建> to_date('2008-12-01);
select count(*)从哪里创造dba_objects > to_date('2008-12-01)
第一行出错:
ora-01861:文本和格式字符串不匹配
TRC的代码
SQL >
复制代码代码如下所示:
select count(*)从哪里dba_objects创建> to_date('19-11月08,'mm-dd—
yyyy);
select count(*)从哪里dba_objects创建> to_date('19-11月08,'mm-dd-yyyy
)
第一行错了:
ora-01843:无效的月
这个错误发生在当一个字符串或一个错误认定格式字符串测试。
使用to_date转换格式字符串是mainly'dd-mon-rr ' / 'dd-mon-rrrr'or'yyyy-mm-dd ' / 'yy-mm-dd。
如果可以识别,正确的结果应该是这种情况。
SQL >
复制代码代码如下所示:
select count(*)从哪里创造dba_objects > '19-11 - 08;
计数(*)
----------
四千一百九十九
这种格式是会话的nls_date_format参数值有关。
复制代码代码如下所示:
选择sys_context('userenv ','nls_date_format ')DF,sys_context('userenv ','nls_date_language ')DL从双
DF DL
----------------------------------------
dd-mon-rr简体中文
我们在会话级别修改这个参数的值。
SQL >改变会话设置nls_date_format = 'yyyy-mm-dd;
会话已更改。
SQL >
复制代码代码如下所示:
select count(*)从哪里创造dba_objects > '19-11 - 08;
select count(*)从哪里创造dba_objects > '19-11 - 08
第一行错了:
ora-01861:文本和格式字符串不匹配
在这种方式中,正确的操作是错误的。可以使用符合nls_date_format格式字符串。
SQL >
复制代码代码如下所示:
select count(*)从dba_objects在创建'2008-12-01>;
这个参数也是应用环境相关的,和一些应用程序自动修改参数值。因此,测试工作最好是在sqlplus执行。
此参数在数据库级别的值是固定的,如下所示:
TRC的代码
SQL >
复制代码代码如下所示:
SELECT * FROM V nls_parameters美元;
参数值
----------------------------------------------------------------------
nls_language简体中文
中国nls_territory
nls_currency。
中国nls_iso_currency
nls_numeric_characters。
nls_calendar公历
nls_date_format dd-mon-rr
nls_date_language简体中文
nls_characterset zhs16gbk
nls_sort二进制
nls_time_format hh.mi.ssxff是
nls_timestamp_format dd-mon-rr hh.mi.ssxff是
nls_time_tz_format hh.mi.ssxff是TZR
nls_timestamp_tz_format dd-mon-rr hh.mi.ssxff是TZR
nls_dual_currency。
nls_nchar_characterset al16utf16
nls_comp二进制
nls_length_semantics字节
nls_nchar_conv_excp假
已经选了19行。
nls_date_language是简体中文所以月在中国像十一月。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。