在SQL Developer中,我有一个类型为timestamp(6)
当我尝试在此字段数据中插入如下:2013-07-10 12:22:22
时,SQL Developer显示错误:not a valid month
。
我在sql developer中有这个设置:
你能告诉我为什么发生这个错误?
答案 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设置运行您的代码时,会好得多。