首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Varchar转换为date

将Varchar转换为date
EN

Stack Overflow用户
提问于 2013-09-22 19:49:17
回答 3查看 6.6K关注 0票数 0

我一直在使用在after Insert触发器中使用的Update查询

查询如下:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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格式如下

在这方面请帮帮我

EN

回答 3

Stack Overflow用户

发布于 2013-09-22 20:02:37

日期列没有自己的格式,它们可以通过工具或使用to_char函数中的特定格式转换为人类可读的格式。

要将varchar2转换为日期,请使用具有正确格式的TO_DATE()。在您的情况下,可能是:

代码语言:javascript
运行
复制
To_Date(M.ACKNOWLEDGMENTHEADER.MESSAGEDATE,'YYYYMMDDHH24MISS')
票数 1
EN

Stack Overflow用户

发布于 2013-09-22 20:03:37

为了将字符串转换为date数据类型的值,您需要使用to_date()函数:

代码语言:javascript
运行
复制
to_date(varchar2_col_name, 'yyyymmddhh24miss')

注: Oracle不以任何特定格式存储日期-您可以使用to_char()函数以您喜欢的任何格式显示它们:

代码语言:javascript
运行
复制
to_char(date_column, 'mm/dd/yyyy hh:mi:ss PM') 

注:子午线指示器PMAM可互换。

票数 0
EN

Stack Overflow用户

发布于 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,而两个日期将得到另一个日期。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18943524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档