簡體   English   中英

如何使用oracle在返回查詢的最后一個值中添加30分鍾?

[英]how to add 30 minutes in last value of return query using oracle?

我的查詢是

Select class_time from tableA

它產生:

0200AM
0230AM
0300AM
0330AM
0400AM

我想要上面的結果

0200AM
0230AM
0300AM
0330AM
0400AM
0430AM

假設您將時間存儲在DATE數據類型(它始終具有年、月、日、小時、分鍾和秒組件)中,然后將INTERVAL文字添加到表中的最大值:

SELECT class_time from tableA
UNION ALL
SELECT MAX( class_time ) + INTERVAL '30' MINUTE FROM tableA

或添加一天的一小部分:

SELECT class_time from tableA
UNION ALL
SELECT MAX( class_time ) + 30 / ( 24 /* hours */ * 60 /* minutes */ )  FROM tableA

輸出

\n |  CLASS_TIME |\n |  :------------------ |\n |  2019-12-16 02:00:00 |\n |  2019-12-16 02:30:00 |\n |  2019-12-16 03:00:00 |\n |  2019-12-16 03:30:00 |\n |  2019-12-16 04:00:00 |\n |  2019-12-16 04:30:00 |\n

如果您的時間存儲為字符串,則將它們轉換為日期,加上 30 分鍾,然后轉換回字符串:

SELECT class_time from tableB
UNION ALL
SELECT TO_CHAR(
         MAX( TO_DATE( class_time, 'HH12:MI AM' ) )
         + INTERVAL '30' MINUTE,
         'HH12:MI AM'
       )
FROM   tableB

輸出

\n |  CLASS_TIME |\n |  :--------- |\n |  02:00 AM |\n |  02:30 AM |\n |  03:00 AM |\n |  03:30 AM |\n |  04:00 AM |\n |  04:30 AM |\n

db<> 在這里擺弄

您可以使用 CTE 和union all

with cte as (
      <your query here>
     )
select time
from cte
union all
select max(time) + interval '30' minute
from cte;

暫無
暫無

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

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