DELIMITER //

CREATE OR REPLACE FUNCTION cloud_addtime(
  p_date_utc DATETIME
)
/*
  Function   : 因為所有的雲端主機, 都是存 UTC, 要 -8 換為 Taipei 時間
  Description: 1.如果有多國的來源, 這個方法並不徹底, 目前先暫用
               2.目前測試 -8 看起來就正常
               3.這個 udf 只是單純地在 select xx日期 時, 將時間 -8 hrs, 並不會異動資料庫的內容
                 純粹是配合 Azure Cloud 主機的運作而已
               SELECT cloud_addtime(NOW())
  Build Date : 2022/12/03
  
  Modify History
    Item Who        Date       Modify Docs
    ==== ========== ========== ================================================
    1    Michael    2022/12/03 Init 
*/
RETURNS DATETIME
DETERMINISTIC
BEGIN
  DECLARE v_date_taipei DATETIME;
  DECLARE v_diff SMALLINT;
  
  -- 從系統參數取得時差，預設為8小時
  SELECT pvalue INTO v_diff FROM sys_parameter WHERE systemid = 'sys' AND pid = 'diff_hours';
  IF v_diff IS NULL THEN 
    SET v_diff = 8; 
  END IF;
  
  -- 將UTC時間轉換為台北時間
  SET v_date_taipei = DATE_SUB(p_date_utc, INTERVAL v_diff HOUR);
  
  RETURN v_date_taipei;
END //

DELIMITER ;