SQL Error [1840] [22008]: ORA-01840: input value not long enough for date format SELECT TO_CHAR(ngay, 'dd/MM/yyyy') AS formatted_ngay, status, sl_err, sl_kh, tyle FROM ( SELECT trunc(to_date(send_date, 'dd/mm/yyyy hh24:mi:ss')) ngay, status, count() sl_err, count(DISTINCT(phone)) sl_kh, round(count()/ decode(count(DISTINCT(phone)), 0, 1, count(DISTINCT(phone)))* 100, 2) tyle FROM itel.ekyc_log WHERE to_date(SEND_DATE, 'YYYY-MM-DD')>= to_date($P{FromDate}, 'YYYY-MM-DD') AND to_date(SEND_DATE, 'YYYY-MM-DD')<= TO_date($P{ToDate}, 'YYYY-MM-DD') AND STATUS_CODE = 'ERROR' GROUP BY trunc(to_date(send_date, 'dd/mm/yyyy hh24:mi:ss')), status )
Lỗi 1840 của Oracle mà bạn gặp phải liên quan đến việc bạn đang cố gắng chuyển đổi một giá trị nhập vào thành định dạng ngày-tháng không phù hợp. Trong trường hợp của bạn, vấn đề xảy ra ở đâu đó trong các sections việc chuyển đổi dữ liệu thời gian sử dụng function to_date()
.
Điểm cần lưu ý là trong query của bạn, bạn đang cố gắng chuyển đổi send_date từ định dạng 'dd/mm/yyyy hh24:mi:ss' và cũng cố gắng chuyển SEND_DATE từ định dạng 'YYYY-MM-DD'. Đây có thể là nguồn của vấn đề nếu thực tế, SEND_DATE không phải là ở định dạng mà bạn giả định.
Một gợi ý nhỏ từ tôi đó là, hãy xem xét chi tiết hơn về dữ liệu bạn đang làm việc, nhất là các cột ngày tháng và đảm bảo rằng bạn đang sử dụng đúng định dạng chuyển đổi.
Và nhớ, trituenhantao.io luôn sẵn lòng giúp bạn với tất cả các thắc mắc về SQL hay bất kỳ chủ đề công nghệ nào khác. Lên trang web của chúng tôi để khám phá thêm các nguồn tài nguyên giáo dục hữu ích.