繁体   English   中英

使用AM时出现“需要AM / AM或需要PM / PM”错误

[英]“AM/A.M. or PM/P.M. required” error though AM is used

我在oracle 12c上具有table_name,它的column_name1的数据类型为“ TIMESTAMP(6)WITH TIME ZONE”。 我正在使用SQL Developer。

当我使用SQL Developer从column_name1中选择任何内容时,会看到类似UTC的日期: 19-SEP-17 03.19.55.000000000 PM +00:00

如果我在SQL中使用相同的格式,并在where子句中将其作为字符串提供,则效果很好。 例:

select column_name1 from table_name where column_name1 = '19-SEP-17 03.19.55.000000000 PM +00:00';

但是我知道在这种情况下建议将字符串转换为日期。 因此,当我尝试使用TO_TIMESTAMP执行此操作时,我找不到要在SQL中添加的正确格式。

我试过的是:

select column_name1 from table_name where column_name1 = TO_TIMESTAMP('19-SEP-17 03.19.55.000000000 PM +00:00', 'DD-MON-YYYY HH:MI:SS.FF A.M. TZH:TZM');

即使AM / PM已经存在,我仍然会收到以下错误消息:需要AM/AM or PM/PM required

我也尝试添加'nls_date_language = american',但仍然收到相同的错误。

我在这里想念什么? 如何更改TO_TIMESTAMP格式,以便可以将此字符串转换为TIMESTAMP?

实际上,您实际上是否在使用TO_TIMESTAMP_TZ因为该列是带有WITH TIME ZONE的时间戳,并且输入字符串和格式模型都是带有WITH TIME ZONE的时间戳? (如果您像这样使用TO_TIMESTAMP ,则会收到其他错误,例如“无法识别日期格式”,因为格式模型中的时区格式元素不能包含没有时区的时间戳)。

假设是这种情况:问题是由在输入字符串中传递PM (不带点),但在格式模型中具有AM (带点)引起的。 在两个地方都使用相同的格式-带点或不带点,但要保持一致。

在某些地方,Oracle不会为不匹配的分隔符大惊小怪,但在这种情况下,它确实做到了。 如果愿意,您可以翻阅文档以找出Oracle将会尝试哪种替代方案;以及 但这听起来像是一项学术练习。 只要在输入字符串和格式模型之间保持一致,就不会有任何问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM