此 SQL 查询没有正确的输出
No proper output for this SQL query
我正在使用此查询来获取 activity.
的开始时间和结束时间之差的结果
SELECT end_time,
NVL(end_time, (TO_Date(sysdate, 'dd/mm/yyyy hh24:mi:ss'))),
(end_time - start_time) * 24 * 60 difference_in_minutes
FROM NCR;
NCR 是 table 的名称。开始时间和结束时间为日期数据类型。在结束时间为 NULL 的地方,我想将该值作为当前系统日期和时间。除了结束时间为 NULL 的行之外,我正在获取每一行的结果。请帮忙指导
您似乎知道 NVL
函数,但您没有在计算中使用它。如果您希望 NVL
成为计算的一部分,则它需要成为计算的一部分
(nvl(end_time,sysdate) - start_time) * 24 * 60 difference_in_minutes
sysdate
已经是一个日期,因此将它传递给 to_date
没有任何意义。 to_date
不带日期参数,只带字符串。如果将 date
传递给 to_date
,Oracle 必须首先使用会话的 NLS_DATE_FORMAT
将日期转换为字符串。然后,to_date
以您指定的任何格式掩码运行。充其量,您只是将其转换回与开始时相同的日期。但是,如果您的会话 NLS_DATE_FORMAT
与您传递给 to_date
的格式掩码不匹配,您可能会得到不同的返回日期或出现错误。
我正在使用此查询来获取 activity.
的开始时间和结束时间之差的结果SELECT end_time,
NVL(end_time, (TO_Date(sysdate, 'dd/mm/yyyy hh24:mi:ss'))),
(end_time - start_time) * 24 * 60 difference_in_minutes
FROM NCR;
NCR 是 table 的名称。开始时间和结束时间为日期数据类型。在结束时间为 NULL 的地方,我想将该值作为当前系统日期和时间。除了结束时间为 NULL 的行之外,我正在获取每一行的结果。请帮忙指导
您似乎知道 NVL
函数,但您没有在计算中使用它。如果您希望 NVL
成为计算的一部分,则它需要成为计算的一部分
(nvl(end_time,sysdate) - start_time) * 24 * 60 difference_in_minutes
sysdate
已经是一个日期,因此将它传递给 to_date
没有任何意义。 to_date
不带日期参数,只带字符串。如果将 date
传递给 to_date
,Oracle 必须首先使用会话的 NLS_DATE_FORMAT
将日期转换为字符串。然后,to_date
以您指定的任何格式掩码运行。充其量,您只是将其转换回与开始时相同的日期。但是,如果您的会话 NLS_DATE_FORMAT
与您传递给 to_date
的格式掩码不匹配,您可能会得到不同的返回日期或出现错误。