sql - 无法转换为日期,收到“ORA-01855:需要 AM/AM 或 PM/PM”错误消息
问题描述
以下代码给了我这个错误信息 - “ORA-01855: AM/AM or PM/PM required”
SELECT TO_DATE
('2/2/2021 8:08:58 PM','MM/DD/YYYY HH:MI:SS AM') "NOW"
FROM DUAL;
如果我尝试转换为 char,我会得到“ORA-01722:无效号码”。
SELECT TO_CHAR('2/2/2021 8:08:58 PM', 'MM/DD/YYYY HH:MI:SS AM') "NOW"
FROM DUAL;
我对 oracle 数据库没有太多经验,并且已经为此苦苦挣扎了一段时间。不知道我做错了什么。谢谢你的帮助!
解决方案
看起来您可能已NLS_DATE_LANGUAGE
设置为英语以外的其他内容;但不会NLS_LANGUAGE
因为这也会影响错误消息:
alter session set nls_language = 'CZECH';
SELECT TO_DATE
('2/2/2021 8:08:58 PM','MM/DD/YYYY HH:MI:SS AM') "NOW"
FROM DUAL;
ORA-01855: požaduje se AM/A.M. nebo PM/P.M.
仅更改日期语言:
alter session set nls_language = 'ENGLISH';
alter session set nls_date_language = 'CZECH';
SELECT TO_DATE
('2/2/2021 8:08:58 PM','MM/DD/YYYY HH:MI:SS AM') "NOW"
FROM DUAL;
ORA-01855: AM/A.M. or PM/P.M. required
您可以将会话设置更改为英语,或将字符串更改为具有适合语言的 AM/PM 指示符值:
alter session set nls_date_language = 'CZECH';
SELECT TO_DATE
('2/2/2021 8:08:58 ODPOLEDNE','MM/DD/YYYY HH:MI:SS AM') "NOW"
FROM DUAL;
NOW
---------
02-ÚNO-21
或者可能是最实际和最简单的,覆盖查询中的会话设置:
alter session set nls_date_language = 'CZECH';
SELECT TO_DATE
('2/2/2021 8:08:58 PM','MM/DD/YYYY HH:MI:SS AM','NLS_DATE_LANGUAGE=ENGLISH') "NOW"
FROM DUAL;
NOW
---------
02-ÚNO-21
推荐阅读
- codeigniter - 如果变量不在 URL 中,如何在 Codeigniter 3 中将变量传递给视图
- android - LiveData(MutableLiveData) 和数据绑定上升错误(调用观察者方法失败)
- sql - 如何在查询中显示以下数据?
- javascript - 在其他视图 mvc 中绑定来自 Partial 视图的按钮事件
- c - 共享库内部程序集全局变量的更改未从外部反映在 linux 中的 C 程序中
- javascript - Javascript TypeError: $.ajax 不是函数问题
- c# - 如何确保在子类中定义静态成员
- java - mysql-connector 8.0 中是否需要通过 `Class.forName()` 注册驱动程序?
- sql - 选择列中具有相同数据的行
- ruby-on-rails - rails puma nginx 111:连接被拒绝