我一直在使用在after Insert触发器中使用的Update查询
查询如下:
UPDATE ARGUS_APP.CMN_REG_REPORTS CARR
SET CARR.DATE_SUBMITTED = (
SELECT M.ACKNOWLEDGMENTHEADER.MESSAGEDATE MESSAGEDATE
FROM MESSAGES M
where M.ACKNOWLEDGMENTHEADER.MESSAGESENDERIDENTIFIER='PMDA'
)
WHERE CARR.ESM_REPORT_ID IN (
select report_id
from esm_owner.safetyreport sr,
esm_owner.MESSAGES M
where m.msg_id = sr.msg_id
);
我正在尝试用select语句的值更新列CARR.DATE_SUBMITTED
SELECT M.ACKNOWLEDGMENTHEADER.MESSAGEDATE MESSAGEDATE
FROM MESSAGES M
where M.ACKNOWLEDGMENTHEADER.MESSAGESENDERIDENTIFIER='PMDA'"
select语句的输出格式为20130918224413
格式,结果列CARR.DATE_SUBMITTED
是日期字段,9/18/2013 12:31:00 PM
格式如下
在这方面请帮帮我
发布于 2013-09-22 20:02:37
日期列没有自己的格式,它们可以通过工具或使用to_char函数中的特定格式转换为人类可读的格式。
要将varchar2转换为日期,请使用具有正确格式的TO_DATE()。在您的情况下,可能是:
To_Date(M.ACKNOWLEDGMENTHEADER.MESSAGEDATE,'YYYYMMDDHH24MISS')
发布于 2013-09-22 20:03:37
为了将字符串转换为date
数据类型的值,您需要使用to_date()
函数:
to_date(varchar2_col_name, 'yyyymmddhh24miss')
注: Oracle不以任何特定格式存储日期-您可以使用to_char()
函数以您喜欢的任何格式显示它们:
to_char(date_column, 'mm/dd/yyyy hh:mi:ss PM')
注:子午线指示器PM
、AM
可互换。
发布于 2013-09-22 23:52:13
正如其他人已经说过的,您应该使用TO_DATE函数。我还可以看到您已经修复了您的select,但是对于使用TO_DATE()的其他人来说,理解格式掩码是很重要的,如果使用不当,它可能会产生不想要的结果。可以避免容易出错的情况,例如使用12小时制、将分钟与月份混淆等。
我推荐使用允许的掩码参数的工作表。
http://www.techonthenet.com/oracle/functions/to_date.php
我知道您问的是Date,但是oracle还有一个TO_TIMESTAMP函数可以将字符串转换为时间戳。参数较少
http://www.techonthenet.com/oracle/functions/to_timestamp.php
日期和时间戳是不同的,因为时间戳有小数秒,并且它们的算法也不同。减去/添加两个时间戳将得到一个intervale,而两个日期将得到另一个日期。
https://stackoverflow.com/questions/18943524
复制相似问题