我试图在OracleSQL中编写一个语句,它将根据特定字段(column 3)中的日期是否为星期一来选择昨天或最近3天的结果。
SELECT Column1, Column2, Column3 FROM Table
WHERE CASE
WHEN To_Char(Column2, 'Day') = 'Monday'
THEN Column3 >= (SYSDATE - Interval "3" Day)
ELSE Column3 >= (SYSDATE - Interval "1" Day)
END
Order by Column3 DESC;
交替地
SELECT Column1, Column2, Column3 FROM Table
WHERE Column3 >=
(CASE
WHEN To_Char(Current_Date 'D') = 1
THEN To_Char(Current_Date - 3)
ELSE To_Char(Current_Date - 1)
END
Order by Column3 DESC;
为了清楚起见,我有一个包含数千个条目的表,我只需要显示昨天或周末的最新结果。该代码段的目的是从column 3读取条目的日期,然后相应地显示最近3天或昨天。
解决了:最终的代码工作--
SELECT Column1, Column2, Column3 FROM The_Table
WHERE Column3 >=
CASE
WHEN to_char(Current_Date, 'fmDay', 'nls_date_language = English') = 'Monday'
THEN TRUNC(SYSDATE) - INTERVAL '3' DAY
ELSE TRUNC(SYSDATE) - INTERVAL '1' DAY
END
ORDER BY Column3 DESC;
2条答案
按热度按时间gwbalxhn1#
像这样的吗
TO_CHAR
中,包括fm
(否则您将得到右填充空格的值,直到最大日期名称长度)并添加语言标识符sysdate
以将其设置为 * 午夜 *;否则,你也会得到时间分量。我猜你不需要它z9smfwbn2#
根据this answer,检查星期几的一种独立于区域设置的方法是使用ISO周: