我使用SQL (3.1.06)从DWHP中提取信息。我想从日期时间(dd/mm/yy hh:mm:ss)->datetime_col4 4中减去时间(hh:mm:ss)-> timecol_3,以便显示类似于(10/01/15 01:00:00)-(03:00:00)的内容(09/01/15 22:00:00)。
现在的日期时间没有合并在一起,也没有在上面的格式。(它们是mm/dd/yyyy和hhmmA或hhmmP格式),所以我使用以下语法将其转换为(dd/mm/ the :mm:ss)格式->
to_char(dd/mm/yy as 24:mi:ss‘),'dd/mm/yy 24:mi:ss’),datetime_col4
你能帮忙吗??
发布于 2015-06-24 17:46:36
看起来您的数据是字符串格式的(基于在粗体文本中执行的操作):
to_char(dd/mm/yy as 24:mi:ss‘),'dd/mm/yy 24:mi:ss’),datetime_col4
在oracle中,最好使用本机日期类型中的日期,而不是不断地将它们转换为字符数据类型,因此datetime_col4最好是这样表示的:
to_date(datecol_1 || ' ' || timecol2, 'dd/mm/yy hh24:mi:ss') as datetime_col4现在假设timecol_3也是has 24:mi:ss表单中的字符串,其中hh24部分在00到23之间,您可以将timecol_3转换为间隔数据类型(最近的数据类型oracle必须转换为纯时间数据类型),如下所示:
cast('0 '||timecol_3 as interval day to second) timecol3在转换到某个间隔时,需要前面的“0”来表示间隔的日部分,在本例中为零天。
在oracle中,可以将间隔数据类型相互添加和减除,也可以在oracle中从datetime数据类型中添加和减去这些数据类型,以便将最终结果作为日期类型(从基本列开始):
to_date(datecol_1 || ' ' || timecol2, 'dd/mm/yy hh24:mi:ss')
- cast('0 '||timecol_3 as interval day to second) result您可以用一个最终的to_char()对其进行包装,以以所需的格式显示结果,或者将NLS_DATE_FORMAT会话设置更改为以所需格式输出所有日期数据类型:
ALTER SESSION NLS_DATE_FORMAT = 'DD/MM/YY HH24:MI:SS';https://stackoverflow.com/questions/30920389
复制相似问题