簡體   English   中英

看到 ORA-01858:在需要數字的地方發現了一個非數字字符

[英]Seeing ORA-01858: a non-numeric character was found where a numeric was expected

以下是我對 Oracle SQL Developer 的查詢:

INSERT INTO ENROLLMENTS (DATE,PARTNER_NAME,ENROLLMENTS)
    SELECT TO_CHAR(TS, 'DD-MON-YYYY HH AM') AS DATE, mrch_bnft_cd, COUNT(*)
    FROM ENROLLMENTS 
    WHERE TS > trunc(sysdate-1/24, 'HH') + 5/24 
    AND TS < trunc(sysdate, 'HH') + 5/24
    GROUP BY TO_CHAR(TS, 'DD-MON-YYYY HH AM'), mrch
    ORDER BY TO_CHAR(TS, 'DD-MON-YYYY HH AM'), mrch_bnft

我得到一個錯誤

ORA-01858: 在預期為數字錯誤的位置發現了非數字字符

但錯誤沒有告訴我在哪里。 有任何想法嗎?

DATE = TIMESTAMP(6)
TS = TIMESTAMP(6)  
PARTNER = VARCHAR2(35 BYTE)  
ENROLLMENTS = NUMBER  
MRCH_BNFT= VARCHAR2(35 BYTE)

基本上,您試圖在時間戳字段中存儲一個表示日期的字符串。 如果您更換:

TO_CHAR(TS, 'DD-MON-YYYY HH AM')

經過

TRUNC(TS, 'hh24')

在所有 4 個地方它都應該工作。

INSERT INTO ENROLLMENTS (DATE,PARTNER_NAME,ENROLLMENTS)
    SELECT   TRUNC(TS, 'hh24') AS DATE, mrch_bnft_cd, COUNT(*)
    FROM     ENROLLMENTS 
    WHERE    TS > trunc(sysdate-1/24, 'HH') + 5/24 
    AND      TS < trunc(sysdate, 'HH') + 5/24
    GROUP BY TRUNC(TS, 'hh24'), mrch
    ORDER BY TRUNC(TS, 'hh24'), mrch_bnft

暫無
暫無

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

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