我一直坚持使用我在插入触发器
之后使用的更新查询查询如下:
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语句的输出采用Varchar格式,如20130918224413
结果列CARR.DATE_SUBMITTED
是DATE字段,如9/18/2013 12:31:00 PM
请帮助我
答案 0 :(得分:1)
DATE列没有自己的格式,它们可以通过工具或使用to_char函数中的特定格式转换为人类可读的格式。
要将varchar2转换为使用正确格式的TO_DATE()的日期。在你的情况下,它可能是:
To_Date(M.ACKNOWLEDGMENTHEADER.MESSAGEDATE,'YYYYMMDDHH24MISS')
答案 1 :(得分:0)
要将字符串文字转换为值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
是可以互换的。
答案 2 :(得分:0)
正如其他人已经说过TO_DATE函数就是你应该使用的。我还可以看到你已经修复了你的选择,但是对于使用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
日期和时间戳的不同之处在于时间戳具有小数秒并且它们的算术不同。减去/添加两个时间戳将给出一个间隔,而两个日期给出另一个日期。