[英]How to convert dates to date format and sort data by date in Oracle SQL
我正在嘗試創建一個條形圖,但是 X 軸日期與我當前的代碼不符。 我知道我必須將 to_ char 設置為 to _date 但不確定如何操作,因為我還需要日期作為 char 以及綁定變量。
select project_name, Dates, sum(records_number) as
from (
select project_name,
case
when :P33_Date_Range = 'Monthly' then
to_char(date_sys, 'Month')
when :P33_Date_Range = 'Daily' then
to_char(date_sys, 'DD-Mon-YYYY')
when :P33_Date_Range = 'Weekly' then
to_char(TRUNC(date_sys, 'IW'), 'DD-Mon-YYYY')
end as Dates, date_sys, records_number
from BATCH
WHERE date_sys BETWEEN TO_DATE('01/01/2022') AND TO_DATE('01/01/2023')
) my_records
group by project_name, Dates
order by project_name, Dates
;
我知道我必須將 to_ char 設置為 to _date 但不確定如何操作,因為我還需要日期作為 char 以及綁定變量。
將日期截斷到子查詢中的適當范圍,然后在聚合后使用它來排序並格式化外部查詢中的日期:
SELECT project_name,
TO_CHAR(date_sys, 'DD-Mon-YYYY') AS dates,
SUM(records_number) AS total
FROM (
SELECT project_name,
CASE :P33_Date_Range
WHEN 'Monthly'
THEN TRUNC(date_sys, 'MM')
WHEN 'Daily'
THEN TRUNC(date_sys, 'DD')
WHEN 'Weekly'
THEN TRUNC(date_sys, 'IW')
END AS date_sys,
records_number
FROM BATCH
WHERE date_sys >= DATE '2022-01-01'
AND date_sys < DATE '2023-01-01'
)
GROUP BY project_name, date_sys
ORDER BY project_name, date_sys;
如果您希望月份格式不同,則:
SELECT project_name,
TO_CHAR(
date_sys,
CASE :P33_Date_Range
WHEN 'Monthly'
THEN 'Month'
ELSE 'DD-Mon-YYYY'
END
) AS dates,
SUM(records_number) AS total
FROM (
SELECT project_name,
CASE :P33_Date_Range
WHEN 'Monthly'
THEN TRUNC(date_sys, 'MM')
WHEN 'Daily'
THEN TRUNC(date_sys, 'DD')
WHEN 'Weekly'
THEN TRUNC(date_sys, 'IW')
END AS date_sys,
records_number
FROM BATCH
WHERE date_sys >= DATE '2022-01-01'
AND date_sys < DATE '2023-01-01'
)
GROUP BY project_name, date_sys
ORDER BY project_name, date_sys;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.