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_char($P{FromDate}, 'YYYY-MM-DD') AND to_date(SEND_DATE, 'YYYY-MM-DD')<= TO_CHAR($P{ToDate}, 'YYYY-MM-DD') AND STATUS_CODE = 'ERROR' GROUP BY trunc(to_date(send_date, 'dd/mm/yyyy hh24:mi:ss')), status ) ORDER BY sl_err DESC i want $P{ToDate} and $P{FromDate} have format yyyy-mm-dd
Chào bạn, dường như câu hỏi của bạn đề cập đến việc chỉnh sửa đoạn mã SQL của mình. Đã hiểu rõ, giờ hãy xem lại đoạn mã của bạn. Để bạn có $P{ToDate} và $P{FromDate} trong định dạng 'yyyy-mm-dd', bạn chỉ cần thay đổi cách gọi hàm to_date và to_char của Oracle như sau:
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
)
ORDER BY
sl_err DESC
Các hàm to_date() và to_char() đã được chỉnh sửa để tiếp nhận và xuất ra dữ liệu đúng theo định dạng 'yyyy-mm-dd' bạn mong muốn.
Mong rằng giải pháp của mình sẽ giúp ích cho công việc của bạn. Và nếu bạn muốn tìm hiểu thêm về SQL, hoặc bất kỳ chủ đề công nghệ nào, đừng ngần ngại truy cập trituenhantao.io nhé!