iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0

職場上所需要管理的資料量是相當龐大而複雜的,但是只要夠熟悉SQL,將資料庫中的資料搭配時間維度,以及VBA、RPA等自動化流程的工具,產生Daily Report,便可以節省大量整理資料的時間。以下是Oracle常用的時間和日期函數

時間函數

1. 取得現在時間
SYSDATE:現在時間
CURRENT_DATE:現在時間,與SYSDATE差別在會考量資料庫時區
SYSTIMESTAMP:回傳時區現在時間戳記,提供更精確(含毫秒)的時間資訊
CURRENT_TIMESTAMP:回傳時區現在時間戳記,與SYSTIMESTAMP差別在會考量資料庫時區
DBTIMEZONE:資料庫時區
SESSIONTIMEZONE:會話時區

 SELECT SYSDATE, SYSTIMESTAMP
 FROM dual;
 -- output
 24-AUG-24
 24-AUG-24 03.55.11.402857 PM +00:00

2. 日期與字串格式轉換,可將日期/時間格式化成特定的格式
TO_DATE:將字串轉為日期的資料型別

 SELECT TO_DATE('2024-08-21', 'YYYY-MM-DD') FROM dual;
 > 21-AUG-24

TO_CHAR:將日期/時間轉為字串可指定輸出方式

 -- 以「年-月-日 時:分:秒」格式顯示
 SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS formatted_date FROM dual;
 > 2024-08-24 18:13:15
 -- 以「星期幾,月 日,年 時:分:秒」格式顯示
 SELECT TO_CHAR(SYSDATE, 'Day, Month DD, YYYY HH24:MI:SS') AS formatted_date FROM dual;
 > Saturday , August    24, 2024 18:13:15

TO_TIMESTAMP:將字串轉為時間戳格式。

 SELECT TO_TIMESTAMP('2024-08-21 15:30:00', 'YYYY-MM-DD HH24:MI:SS') FROM dual;
 > 21-AUG-24 03.30.00.000000000 PM

3. 日期的計算
INTERVAL:表示時間間隔,可用於加減日期時間。

 -- 加 10 天
 SELECT SYSDATE + 10 FROM dual;
 -- 回扣 5 小時 20 分鐘
 SELECT SYSDATE - 5/24 - 20/1440 
 FROM dual;
 -- 計算兩個日期之間的天數
 SELECT (TO_DATE('2024-08-21', 'YYYY-MM-DD') - TO_DATE('2024-08-01', 'YYYY-MM-DD')) AS days_diff FROM dual;
 > 20
 -- 加 2 小時
 SELECT SYSTIMESTAMP + INTERVAL '2' HOUR FROM dual;
 > 24-AUG-24 08.16.36.928612000 PM +00:00
 -- 減 30 分鐘
 SELECT SYSTIMESTAMP - INTERVAL '30' MINUTE FROM dual;
 > 24-AUG-24 05.46.36.937557000 PM +00:00

4. 日期和時間的提取
EXTRACT:從日期中提取特定的部分,如年份、月份、日期等。

 SELECT EXTRACT(YEAR FROM SYSDATE) AS year,
      EXTRACT(MONTH FROM SYSDATE) AS month,
      EXTRACT(DAY FROM SYSDATE) AS day
 FROM dual;
 > Output:
   YEAR	MONTH	     DAY
   2024	    8	      24

5. 時間判斷式:可過, <, =或者between等運算子進行時間條件的判斷,放於select or where子句中

 SELECT CASE
          WHEN TO_DATE('2024-08-21', 'YYYY-MM-DD') > SYSDATE THEN 'Y'
          WHEN SYSDATE BETWEEN TO_DATE('2024-01-01', 'YYYY-MM-DD') AND TO_DATE('2024-12-31', 'YYYY-MM-DD') THEN 'Y'
          ELSE 'N'
      END AS is2024
 FROM dual;
 > Y

上一篇
Day 13 基礎-多條件判斷式
下一篇
Day 15 基礎-一變多行
系列文
不居功的系統隱士 - 30天由淺入深學SQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言