首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在查询中添加Sum() (oracle)

在查询中添加Sum() (oracle)
EN

Stack Overflow用户
提问于 2020-06-22 21:25:30
回答 3查看 56关注 0票数 1

我有一个工作请求:

代码语言:javascript
复制
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添加到这个地方sum(TO_CHAR(TO_DATE('1970-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')+(FinishTime - StartTime),‘hh24:mi:ss’)作为run_time

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-22 21:27:50

我认为你想要对差值进行求和,然后添加到日期并转换为字符串:

代码语言:javascript
复制
TO_CHAR(date '1970-01-01' + sum(FinishTime - StartTime), 'hh24:mi:ss')

根据您的评论,您的列是timestamps而不是dates。您只是在寻找第二个精度,所以您最好将其转换为日期:

代码语言:javascript
复制
TO_CHAR(date '1970-01-01' + sum(cast(FinishTime as date) - cast(StartTime as dte)), 'hh24:mi:ss')
票数 0
EN

Stack Overflow用户

发布于 2020-06-22 22:05:58

您正在将date转换为char并添加timestamp的差异,这是错误的。

你必须这样做:

代码语言:javascript
复制
DATE'1970-01-01' +(cast(FinishTime as date) - cast(StartTime as date)) AS run_time
票数 0
EN

Stack Overflow用户

发布于 2020-06-22 22:17:16

您可以尝试一些解决方法,如下所示:

trunc( mod(mod(end_date - start_date,1)*24,1)*60 )以分钟为单位,mod(end_date- start_date,1)*24,1)*60,1)*60为秒

对于其余部分,您可以尝试以下内容:https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions230.htm#i1002084

获得结果后,您可以轻松地将其包装为字符串格式,例如to_char(x,'yyyy-mm-dd')

下面是更多的例子:

Calculate difference between 2 date / times in Oracle SQL

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

https://stackoverflow.com/questions/62515536

复制
相关文章

相似问题

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