在Oracle SQL中,我已将4列(列名前:a_d
、a_t
、d_d
、d_t
)合并为2列(列名后:a_d_t
和d_d_t
),每个列的格式为:YYYY-MMM-DD HH24:MI
。我试图找出每次观察在a_d_t
(开始时间)和d_d_t
(结束时间)之间经过了多少时间(天和小时)。
我试过d_d_t - a_d_t
和to_date(d_d_t)-to_date(a_d_t)
,但每种都得到了以下内容:invalid identifier
。
作为参考,我使用的合并列的代码是:
to_char(to_date
( to_char (a_d,'YYYYMMDD')
|| a_t,
'YYYYMMDDHH24MI'
), 'YYYY-MM-DD HH24:MI')
您的输入是字符串,因此必须将它们转换为日期。但仅仅说to_date是不够的,还必须给出适当的格式模型。
select to_date(d_d_t, 'yyyy-mm-dd hh24:mi') - to_date(a_d_t, 'yyyy-mm-dd hh24:mi')
from < ... >
会在几天内给你带来不同。乘以24,你将在几个小时内得到它。
考虑到您的输入d_d_t、格式为yyyy-mm-dd hh:mi的a_dale字符串和nls_date_format不同,您可以尝试使用以下查询,看看它是否有效。
要查找两个日期之间的持续时间,必须将日期字符串转换为日期格式。
select col_a, col_b, to_date(col_a,'yyyy-mm-dd hh24:mi:ss')- to_date(col_b,'yyyy-mm-dd hh24:mi:ss')duration
from x_datedur
将col_a
替换为结束时间,将col_b
替换为开始时间,并将x_datedur
替换为您的表名。