Oracle SQL

我在Oracle数据库中工作,我试图从12小时转换到24小时。

我目前已经将HH更新为HH24,而且我仍然可以看到24小时的全部时间,实际上它只能在一天中的前12个小时内完成。 下面是我的工作查询没有错误,并输出正确的结果,除了其他缺少12小时。

SELECT
CASE(EXTRACT(HOUR FROM a.TIME)) 
WHEN 1 THEN '1'
WHEN 2 THEN '2'
WHEN 3 THEN '3'
WHEN 4 THEN '4'
WHEN 5 THEN '5'
WHEN 6 THEN '6'
WHEN 7 THEN '7'
WHEN 8 THEN '8'
WHEN 9 THEN '9'
WHEN 10 THEN '10'
WHEN 11 THEN '11'
WHEN 12 THEN '12'
WHEN 13 THEN '13'
WHEN 14 THEN '14'
WHEN 15 THEN '15'
WHEN 16 THEN '16'
WHEN 17 THEN '17'
WHEN 18 THEN '18'
WHEN 19 THEN '19'
WHEN 20 THEN '20'
WHEN 21 THEN '21'
WHEN 22 THEN '22'
WHEN 23 THEN '23'
WHEN 24 THEN '24'
ELSE 'OTHERS' END AS "ENTRY_TIME_HOUR",
COUNT(*) AS "TOTAL_WITHIN_THE_HOUR"

 FROM Table1 a 
 WHERE 
 a.TIME >= TO_DATE('2018/01/05 01:00:01', 'YYYY/MM/DD HH24:MI:SS') 
 AND a.TIME <= TO_DATE('2018/01/05 12:59:59', 'YYYY/MM/DD HH24:MI:SS')
 GROUP BY EXTRACT(HOUR FROM a.TIME)

上面的查询会输出如下所示的内容,但最多只能输入12(应该是1-24)

ENTRY_TIME_HOUR  TOTAL_WITHIN_THE_HOUR
   11                    68
   8                      3
   9                     83
  10                     26
  12                     62

另外,我发现TO_CHAR很有用,但我无法一起运行TO_CHAR和TO_DATE。 最终目标是在给定小时的时间内汇总所有输出。 输出将返回24行,每小时总计数。

以下是将输出FULL时间(不只是小时HH)的单独查询:

SELECT
to_char(a.TIME, 'DD/MM/YYYY HH24:MI:SS') AS "TIME in 24"
FROM TABLE a 
WHERE 
AND a.TIME >= TO_DATE('2018/01/05 01:00:01', 'YYYY/MM/DD HH24:MI:SS') 
AND a.TIME <= TO_DATE('2018/01/05 23:59:59', 'YYYY/MM/DD HH24:MI:SS')

上面的查询将提供如下所示:

 05/01/2018 15:00:40
 05/01/2018 16:01:45
 05/01/2018 09:59:51
 05/01/2018 10:04:58

但是,我无法将TO_CHAR和TO_DATE查询合并到一起,而不会遇到多个问题。 是否有可能将第二个查询与第一个查询合并为一天中的整个24小时提供一小时的计数结果?

谢谢


首先,一天的时间从0到23,而不是1到24。

其次,你正在使简单的事情变得复杂。 怎么了

select to_char(a.time, 'HH24') theHour
, count(*) occurrences

from yourTable a

where a.time >= date '2018-01-05'
and a.time < date '2018-01-06'
group by to_char(a.time, 'HH24')

这太长了评论。 从学习使用DATETIMESTAMP关键字开始。 输入明确的时间戳非常简单:

WHERE a.TIME >= TIMESTAMP '2018-01-05 01:00:01' AND
      a.TIME <= TIMESTAMP '2018-01-05 12:59:59'

这样写就更清楚了,你只需要选择1到12之间的小时,这就是为什么你只能获得这些时间。 更改WHERE条件,你可能会得到更多的时间。

链接地址: http://www.djcxy.com/p/36917.html

上一篇: Oracle SQL

下一篇: concat yesterdays date with a specific time