在 SQL Developer 中,我有一列Service Completed有日期和時間,但我只提取到小時和分鐘。對于小時和分鐘,如果是 24 小時或更短,我使用 case 陳述句告訴我“是”或“否”——因此,如果是 24:01,它將是“否”,因為它已經過去了 1 分鐘。
這是我的案例陳述。
SELECT
CASE
WHEN (((extract(day FROM service_completed) * 24) extract(hour FROM service_completed) <= 24)
AND (extract(minute FROM service_completed)) <= 0)
THEN 'Y'
ELSE 'N'
END AS Completed_within_24HRS
這是結果
18:52 N
17:37 N
47:21 N
20:29 N
45:31 N
23:12 N
29:14 N
結果有幾條記錄應該是“Y”但得到了“N”。請幫助我如何更正 case 陳述句中的邏輯。
謝謝
uj5u.com熱心網友回復:
你的問題似乎是你總是在檢查分鐘,并要求它是<= 0。我認為您想要的是少于 24:00 的時間。這意味著您要檢查分鐘的唯一時間是小時是否正好是 24。像這樣:
case when
extract(day from service_completed)*24
extract(hour from service_completed) < 24
or (
extract(day from service_completed)*24
extract(hour from service_completed) = 24
and extract(minute from service_completed) = 0
)
then 'Y' else 'N' end as Completed_within_24HRS
旁注:縮進確實有助于撰寫布爾運算式。
uj5u.com熱心網友回復:
SELECT CASE
WHEN extract(day FROM service_completed) * 24 extract(hour FROM service_completed) < 24
THEN 'Y'
WHEN (extract(day FROM service_completed) * 24 extract(hour FROM service_completed) = 24
AND extract(minute FROM service_completed) = 0)
THEN 'Y'
ELSE 'N'
END AS Completed_within_24HRS
你的例子 db<>fiddle
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/361083.html
上一篇:帶有2個表的條件的MySQL查詢
