当前位置: 首页 > 面试题库 >

Oracle,将持续时间行除以一小时

商佑运
2023-03-14
问题内容

我正在研究oracle db,但我不太擅长Oracle。我正在尝试按一个小时的时段划分一行。

例如,如果一个时间行给出如下,

开始时间(yyyy / mm / dd hh24:mi:ss)| 结束时间(yyyy / mm / dd hh24:mi:ss)

2013/09/01 09:30:00 2013/09/01 11:38:59

我想要看到的结果是这样的:

2013/09/01 09:30:00 2013/09/01 09:59:59  
2013/09/01 10:00:00 2013/09/01 10:59:59
2013/09/01 11:00:00 2013/09/01 11:38:59

我已经被搜索过如何做,但是找不到。
但是我想可以通过使用“ CONNECT BY”来完成。
任何帮助都会很棒。提前致谢。


问题答案:

我有一个基本的查询,您可以解决它并得到您想要的。

select greatest(Start_time, trunc(Start_time+(level-1)/24, 'hh24')), 
least(End_time, trunc(Start_time+(level)/24, 'hh24'))
from log_table 
connect by level <= floor((dt1-dt2)*24)+1;

sqlfiddle的示例:

http://sqlfiddle.com/#!4/82625/29



 类似资料:
  • 我正试图使用时刻持续时间格式设置倒计时计时器的格式,但一旦时间达到60分钟以下,小时就会消失,例如60分钟显示为“01:00”,这是正确的59分钟显示为“59”,这是不正确的,它应该显示为“00:59” 其中3500000毫秒等于58分钟 我有以下代码: 显示结果:58,而不是00:58 我到底做错了什么? 我也尝试过这种变化,但没有任何效果

  • 我正在寻找一种从“ISO 8601持续时间格式”(P0DT0H0M0S)转换为小时的便捷方法。 到目前为止,我想到了这个: 如您所见,我的方法是将数字拆分并乘以24、1、1/60、1/3600以得到小时。我可以减少代码量吗? 样本数据和所需结果 输入: 'P1DT2H3M44S' (1 天 2 小时 3 分 44 秒) 期望输出: 26.062222222222222 (这是小时)

  • 问题内容: 我正在使用sql server 2008 r2。我正在尝试在 FromDate 和 Todate 之间按24小时周期范围划分行。例如,如果给定的时间行如下(( FromDate 和 Todate 之间的范围是4天,那么我要4行) 我想要看到的结果是这样的: 问题答案: 试试这个查询:

  • 问题内容: 为了测试并发的goroutine,我在函数中添加了一行代码,以使其花费随机的时间返回(最多一秒钟) 但是,当我编译时,出现此错误 。\ crawler.go:49:无效操作:rand.Int31n(1000)* time.Millisecond(int32和time.Duration类型不匹配) 有任何想法吗?如何乘以持续时间? 问题答案: 和是不同的类型。您需要将转换为,例如。

  • 在ISO 8601中,持续时间的格式为PT5M(5分钟)或PT2H5M(2小时5分钟)。我有一个JSON文件,其中包含这种格式的值。我想知道spark是否可以提取分钟的持续时间。我尝试将其读取为“DateType”,并使用“minutes”函数获取分钟数,结果返回空值。 示例json 目前,我正在将其作为字符串读取并使用“regex_extract”函数。我想知道一种更有效的方法。 https:/

  • 我有ISO8601格式的持续时间值,我将其转换为时间值为整数秒,如下所示: ISO8601格式的持续时间值=“P1Y”。 我将该值存储在“时间-单位-秒”中。因此,当我检索的值将是在int,我想转换回ISO8601持续时间格式,所以我应该得到“P1Y”转换后回来。 有没有快速的方法可以做到这一点?或者我必须把时间的int值转换成float,然后通过某种方法把它转换成ISO8601持续时间。