[英]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.