Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用sql查询查询给定骑行开始时间和结束时间的骑行持续时间_Sql_Oracle - Fatal编程技术网

如何使用sql查询查询给定骑行开始时间和结束时间的骑行持续时间

如何使用sql查询查询给定骑行开始时间和结束时间的骑行持续时间,sql,oracle,Sql,Oracle,骑乘表中的“开始”列是每次骑乘的开始日期和时间,“结束”列是骑乘的结束日期和时间。 我必须获取行程持续时间最长的骑乘,即[开始-结束]是哪一骑乘的最大行程。 datediff函数在oracle平台中不起作用。 请帮助编写在oracle上运行的代码。修订版:正如@JonHeller指出的,ERD有时间戳而不是日期。但除了对结果的描述之外,实际上什么都没有改变。时间戳也可以直接减去。结果是一场灾难。间隔是可确定的,因此可以确定最大间隔。基本查询保持不变-要获取持续时间最长的位置,请解析为: sele

骑乘表中的“开始”列是每次骑乘的开始日期和时间,“结束”列是骑乘的结束日期和时间。 我必须获取行程持续时间最长的骑乘,即[开始-结束]是哪一骑乘的最大行程。 datediff函数在oracle平台中不起作用。
请帮助编写在oracle上运行的代码。

修订版:正如@JonHeller指出的,ERD有时间戳而不是日期。但除了对结果的描述之外,实际上什么都没有改变。时间戳也可以直接减去。结果是一场灾难。间隔是可确定的,因此可以确定最大间隔。基本查询保持不变-要获取持续时间最长的位置,请解析为:

select ... , max(start_on - end_on) longest_duration ... 
select ... , max(start_on - end_on) longest_duration ... 
参见修订后的示例


在Oracle中,日期可以直接减去,不需要datediff函数。结果是一个数字,整数代表完整的天数,小数部分代表一天的小数部分。它没有直接给出时间间隔;例如,您可能会得到2.25,即2天6小时(6小时=1/4天)
在您的情况下,要获得最大持续时间,请解决以下问题:

select ... , max(start_on - end_on) longest_duration ... 
select ... , max(start_on - end_on) longest_duration ... 

参见示例。

到目前为止您尝试了什么?一个好的问题还应该提供示例数据和期望的结果。部分困难可能是因为列是时间戳而不是日期。减去列将返回一个间隔而不是一个数字。哎呀,我错过了,谢谢@JonHeller。我修改了答案,改为显示时间戳。