簡體   English   中英

Oracle SQL — TO_CHAR和TO_DATE語句

[英]Oracle SQL — TO_CHAR and TO_DATE Statement

我正在使用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條件,您可能會得到更多時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM