我有一個日期列,我試圖將其分組到特定組中。有些日期已經過去,有些日期在未來。我想按 1-30、31-59、60-89、 90 對它們進行分組,所以對于那些已經通過的和即將到來的,總共會有 8 個組。以下是我到目前為止所寫的內容,但我覺得我過于復雜了,我做的調整越多,它就變得越不正確。任何見解表示贊賞!
CASE WHEN DATEDIFF(CURRENT_DATE(),`date`) >= 90 THEN '90 days past'
WHEN DATEDIFF(CURRENT_DATE(),`date`) >= 60 THEN '60 days past'
WHEN DATEDIFF(CURRENT_DATE(),`date`) >= 30 THEN '30 days past'
WHEN DATEDIFF(`date`,CURRENT_DATE()) >= 90 THEN '90 days future'
WHEN DATEDIFF(`date`,CURRENT_DATE()) >= 60 THEN '60 days future'
WHEN DATEDIFF(`date`,CURRENT_DATE()) >= 30 THEN 'Next 30 days'
ELSE 'Not Late'
END
uj5u.com熱心網友回復:
我覺得沒關系。
我只會為每個使用相同的 datediff。
create table test (`date` date); insert into test values ( date_add(current_date, interval -90 day) ), ( date_add(current_date, interval -89 day) ), ( date_add(current_date, interval -60 day) ), ( date_add(current_date, interval -59 day) ), ( date_add(current_date, interval -30 day) ), ( date_add(current_date, interval -29 day) ), ( date_add(current_date, interval 29 day) ), ( date_add(current_date, interval 30 day) ), ( date_add(current_date, interval 59 day) ), ( date_add(current_date, interval 60 day) ), ( date_add(current_date, interval 89 day) ), ( date_add(current_date, interval 90 day) )
select `date`, CASE WHEN DATEDIFF(`date`, CURRENT_DATE) <= -90 THEN '90 days past' WHEN DATEDIFF(`date`, CURRENT_DATE) <= -60 THEN '60 days past' WHEN DATEDIFF(`date`, CURRENT_DATE) <= -30 THEN '30 days past' WHEN DATEDIFF(`date`, CURRENT_DATE) >= 90 THEN '90 days future' WHEN DATEDIFF(`date`, CURRENT_DATE) >= 60 THEN '60 days future' WHEN DATEDIFF(`date`, CURRENT_DATE) >= 30 THEN 'Next 30 days' ELSE 'Not Late' END as status from test日期 | 地位 :--------- | :------------- 2021-10-12 | 過去 90 天 2021-10-13 | 過去 60 天 2021-11-11 | 過去 60 天 2021-11-12 | 過去 30 天 2021-12-11 | 過去 30 天 2021-12-12 | 不遲到 2022-02-08 | 不遲到 2022-02-09 | 未來 30 天 2022-03-10 | 未來 30 天 2022-03-11 | 未來 60 天 2022-04-09 | 未來 60 天 2022-04-10 | 未來 90 天
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/411007.html
標籤:
