sql developer中的时间戳数据类型

时间:2013-10-13 15:47:11

标签: oracle oracle-sqldeveloper

在SQL Developer中,我有一个类型为timestamp(6)

的字段

当我尝试在此字段数据中插入如下:2013-07-10 12:22:22时,SQL Developer显示错误:not a valid month

我在sql developer中有这个设置: enter image description here

你能告诉我为什么发生这个错误?

1 个答案:

答案 0 :(得分:4)

因为你的NLS_TIMESTAMP_FORMAT有错误;你有两次MM元素。它应该是:

YYYY-MM-DD HH24:MI:SS

如果您只使用HH作为小时元素,则您无法区分上午和下午的时间;例如,HH24会在凌晨1点为您01,在下午1点为13。分元素是MI,而不是MM。目前,它正试图将22解释为月份数字,这个数字无效,正如错误所示。

但是,如果您不想要小数秒,为什么要在timestamp上使用date

通常,您不应该依赖NLS设置。除了即席查询之外,使用to_timestamp('2013-07-10 12:22:22', 'YYYY-MM-DD HH24:MI:SS')来避免任何歧义和惊喜,当其他人使用不同的NLS设置运行您的代码时,会好得多。