簡體   English   中英

蟾蜍上的 Oracle SQL 無效編號

[英]Oracle SQL invalid number on toad

我已經做了這個查詢,但是當我執行它時,我收到了關於“無效數字”的錯誤。 但是在 SQL Developer for Oracle 中,沒有錯誤; 我得到了我想要的結果,但在 Toad 中我得到了 'Invalid Number' 。

DECLARE v_rep number;

BEGIN
   EXECUTE IMMEDIATE
     'SELECT to_number(REPLACE(max(substr(to_char(r_timestamp_arr,''HH24:MI''),1,2) ||
        ltrim(to_char(round(to_number(Substr(to_char(r_timestamp_arr, ''HH24:MI''),4,2)) /
        60,2),''.00''))), ''.'', '',''))  -
        to_number(REPLACE(MIN(substr(to_char(r_timestamp_arr,''HH24:MI''),1,2) ||
        ltrim(to_char(round(to_number(Substr(to_char(r_timestamp_arr, ''HH24:MI''),4,2)) / 
        60,2),''.00''))), ''.'', '','')) 
     FROM TV_MAX
     WHERE TV_UID = ''7a87e8e4861a4d0aae65da1a7248b256''' 
     INTO v_rep;
     END ;

您不需要EXECUTE IMMEDIATE也不需要使用字符串:

甲骨文設置

CREATE TABLE tv_max ( tv_uid, r_timestamp_arr ) AS
SELECT '7a87e8e4861a4d0aae65da1a7248b256', DATE '2019-12-27' + INTERVAL '00:00' HOUR TO MINUTE FROM DUAL UNION ALL
SELECT '7a87e8e4861a4d0aae65da1a7248b256', DATE '2019-12-27' + INTERVAL '01:30' HOUR TO MINUTE FROM DUAL;

查詢 1

如果要忽略日期和時間的日期部分:

DECLARE
  v_rep NUMBER;
BEGIN
  SELECT ( MAX( r_timestamp_arr - TRUNC( r_timestamp_arr ) )
         - MIN( r_timestamp_arr - TRUNC( r_timestamp_arr ) )
         ) * 24
  INTO   v_rep
  FROM   tv_max
  WHERE  TV_UID = '7a87e8e4861a4d0aae65da1a7248b256';

  DBMS_OUTPUT.PUT_LINE( v_rep );
END;
/

查詢 2

如果您想要關於日期組件的最小值/最大值,那么查詢可以更簡單:

DECLARE
  v_rep NUMBER;
BEGIN
  SELECT ( MAX( r_timestamp_arr ) - MIN( r_timestamp_arr ) ) * 24
  INTO   v_rep
  FROM   tv_max
  WHERE  TV_UID = '7a87e8e4861a4d0aae65da1a7248b256';

  DBMS_OUTPUT.PUT_LINE( v_rep );
END;
/

輸出

對於測試數據,兩個輸出:

\n 1.5\n

db<> 在這里擺弄

看起來您想知道最大和最小小時(包括分鍾,不包括秒)之間的區別,日期部分被截斷。 因此,截斷時間,減去日期,您將得到以天為單位的結果,乘以 24,結果將以小時為單位。 查詢不依賴於 NLS 設置:

select 24 * (to_date(max(to_char(r_timestamp_arr, 'hh24:mi')), 'hh24:mi') 
           - to_date(min(to_char(r_timestamp_arr, 'hh24:mi')), 'hh24:mi')) as diff
  from tv_max
  where tv_uid = '7a87e8e4861a4d0aae65da1a7248b256'

數據庫小提琴

暫無
暫無

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

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