我有张桌子:
Cust_data
(
"SEQ_NO" NUMBER,
"CUST_ID" VARCHAR2,
"SERVER_SID" VARCHAR2,
"CUST_NAME" VARCHAR2,
"EVENT_TYM" TIMESTAMP,
"CUST_DOB" DATE,
"ADD_TYMSTMP" TIMESTAMP,
"STATUS" VARCHAR2
) 我正在尝试插入以下格式的timeStamp:
2014-01-25T04:05:26.669Z我尝试使用下面的update语句:
update CUST_DATA set
ADD_TYMSTMP = TO_TIMESTAMP('2014-01-25T04:05:26.669Z','yyyy/mm/dd'T'hh24:mi:ss'Z'')
where CUST_ID='chan012'上面的update语句给出一个错误:
ORA-00907: missing right parenthesis这条语句工作得很好。
update CUST_DATA set
ADD_TYMSTMP = TO_TIMESTAMP('2014-01-25 04:05:26.669','yyyy-mm-dd hh24:mi:ss.ff')
where CUST_ID='chan012'但问题是,我需要将此格式写入表中。
2014-01-25T04:05:26.669Z我有一个csv文件,用上面提到的时间戳格式将它加载到这个表中,它没有被加载。所以我试着插入一条记录,它也不起作用。有人能帮上忙吗,提前谢谢。
发布于 2014-02-11 06:50:37
您需要在固定字符两边使用双引号,而不是单引号:
update CUST_DATA set
ADD_TYMSTMP = TO_TIMESTAMP('2014-01-25T04:05:26.669Z',
'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"')
where CUST_ID='chan012';这是shown in the documentation;格式模型列表中显示的固定值是"text"。
在您的版本中,模型... 'Z'') ...末尾的两个单引号被视为转义引号,这意味着您的引号数量不均匀-您的字符串没有终止,即使终止也是错误的。ORA-00907是一个相当通用的错误,并不总是直接有帮助的。这通常只是意味着您得到了一些相当基本的错误,Oracle已经到了解析步骤的末尾,但无法弄清楚到底是什么。当然,有时你确实漏掉了一个闭括号,但当你看到这个的时候,你通常必须看得更深一点。
您说您正在加载这些数据;如果您正在使用SQL*Loader进行加载,那么您可以使用specify the model in the control file
load data .... into cust_data ...
(
...
add_tymstmp timestamp 'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"',
...
)在11gR2中测试,并在文件中使用您的固定值,这将提供:
select add_tymstmp,
to_char(add_tymstmp, 'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"') as display
from cust_data;
ADD_TYMSTMP DISPLAY
---------------------------- ------------------------------
25-JAN-14 04.05.26.669000000 2014-01-25T04:05:26.669Z https://stackoverflow.com/questions/21688472
复制相似问题