查询中的add sum()(oracle)

4ktjp1zp  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(229)

我有一个工作要求:

SELECT Drivers.Surname, Drivers.Name, Waybills.StartTime,
       TO_CHAR(TO_DATE('1970-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')+(FinishTime - StartTime),'hh24:mi:ss') AS run_time
FROM Waybills JOIN
     Drivers
     ON Drivers.Id = Waybills.DriverId
WHERE Waybills.StartTime > SYSDATE-7 ORDER BY Name ASC;

但我不能将sum(to \u char(to \u date('1970-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')+(finishtime-starttime),'hh24:mi:ss'))添加为运行时间

2wnc66cl

2wnc66cl1#

我想你应该对差值求和,然后加上一个日期并转换成一个字符串:

TO_CHAR(date '1970-01-01' + sum(FinishTime - StartTime), 'hh24:mi:ss')

根据你的评论,你的专栏是 timestamp 不是的 date s。您只需要第二个精度,因此您不妨转换为日期:

TO_CHAR(date '1970-01-01' + sum(cast(FinishTime as date) - cast(StartTime as dte)), 'hh24:mi:ss')
3npbholx

3npbholx2#

你正在转变 datechar 加上 timestamp 这是错误的。
你必须这样做:

DATE'1970-01-01' +(cast(FinishTime as date) - cast(StartTime as date)) AS run_time
xlpyo6sf

xlpyo6sf3#

您可以尝试以下解决方法:
trunc(mod(end\u date-start\u date,1)*24,1)*60)表示分钟,mod(mod(end\u date-start\u date,1)*24,1)*60,1)*60表示秒
剩下的你可以试试这些:https://docs.oracle.com/cd/b19306_01/server.102/b14200/functions230.htm#i1002084
得到结果后,您可以轻松地将其 Package 为字符串格式[例如,to_char(x,'yyyy-mm-dd')]
下面是更多的例子:
在oracle sql中计算两个日期/时间之间的差异

相关问题