IF (To_Char(Date1,'Day') = 'Sunday' Or To_Char(Date2,'Day') = 'Sunday') Then
SELECT columns ... FROM Table_Name;
ELSE
SELECT columns ... FROM Table_Name;
这是行不通的!
IF (To_Char(Date1,'Day') = 'Sunday' Or To_Char(Date2,'Day') = 'Sunday') Then
SELECT columns ... FROM Table_Name;
ELSE
SELECT columns ... FROM Table_Name;
这是行不通的!
它“不起作用”,因为您没有在格式模型中使用格式模型修饰符, fm
。因为您没有使用格式模型修饰符,所以一周中的天数用空格填充到 9 个字符(最长的星期三的长度)。这反过来意味着您的相等性测试不正确。
为了修复它,请使用格式模型修饰符:
to_char(date1, 'fmDay')
您可以运行此查询来演示问题和解决方案:
with a_week as (
select sysdate - level as dy
from dual
connect by level <= 7 )
select dy
, to_char(dy, 'Day')
, length(to_char(dy, 'Day'))
, to_char(dy, 'fmDay')
, length(to_char(dy, 'fmDay'))
from a_week
说了我就不打扰了。为什么你需要输入一整天?请改用DY
格式模型:
if to_char(date1,'DY') = 'SUN' or to_char(date2,'DY') = 'SUN' then
...
这始终是三个字符长。
关于调试的一个快速说明。如果您知道第一个 IF 语句没有正确执行,我将遵循以下阶段: