我有一个工作请求:
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
发布于 2020-06-22 21:27:50
我认为你想要对差值进行求和,然后添加到日期并转换为字符串:
TO_CHAR(date '1970-01-01' + sum(FinishTime - StartTime), 'hh24:mi:ss')根据您的评论,您的列是timestamps而不是dates。您只是在寻找第二个精度,所以您最好将其转换为日期:
TO_CHAR(date '1970-01-01' + sum(cast(FinishTime as date) - cast(StartTime as dte)), 'hh24:mi:ss')发布于 2020-06-22 22:05:58
您正在将date转换为char并添加timestamp的差异,这是错误的。
你必须这样做:
DATE'1970-01-01' +(cast(FinishTime as date) - cast(StartTime as date)) AS run_time发布于 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')
下面是更多的例子:
https://stackoverflow.com/questions/62515536
复制相似问题