If statement 用空格填充的日期名称会阻止正确的行为
当确定日期在一周中的某一天时,我试图在PLSQL中进入if条件If statement 用空格填充的日期名称会阻止正确的行为,if-statement,plsql,varchar2,in-operator,If Statement,Plsql,Varchar2,In Operator,当确定日期在一周中的某一天时,我试图在PLSQL中进入if条件 DECLARE v_gebDatum CONSTANT DATE := to_date('21-01-1995', 'dd-MM-yyyy'); v_mathDatum DATE := v_gebDatum; v_huidigeDag VARCHAR2(20); v_teller
DECLARE
v_gebDatum CONSTANT DATE := to_date('21-01-1995', 'dd-MM-yyyy');
v_mathDatum DATE := v_gebDatum;
v_huidigeDag VARCHAR2(20);
v_teller number := 0;
BEGIN
WHILE to_char(v_mathDatum, 'yyyy') < to_char(sysdate, 'yyyy')
LOOP
v_mathDatum := add_months(v_mathDatum, 12);
v_huidigeDag := to_char(v_mathDatum, 'DAY');
dbms_output.put_line(v_huidigeDag);
IF v_huidigeDag IN('ZATERDAG', 'ZONDAG')
THEN
dbms_output.put_line(v_mathDatum);
END IF;
END LOOP;
END;
声明
v_gebDatum固定日期:=截止日期('21-01-1995','dd-MM-yyyy');
v_mathDatum日期:=v_gebDatum;
v_huidigeDag VARCHAR2(20);
v_出纳员编号:=0;
开始
而to_char(v_mathdatam,'yyyy')
问题是我不能让它工作。在打印v_huidigeDag时,在一些打印行中清楚地显示了“ZATERDAG”和“ZONDAG”值
看来,出于某种原因,当我打印日期名称的值时,程序在其中添加了空格。我猜在我的区域设置中,最长的日名('DONDERSDAG')需要字符长度。所有字符数少于此数的内容都会添加空格。所以zaterdag变成了='zaterdag',zondag变成了='zondag'。现在它正在工作,但是有人知道一种简单的方法来防止这种情况吗?问题在于
日格式。根据报告:
天
日期名称,用空格填充,以显示该元素使用的日期语言中最宽日期名称的宽度
要禁用该行为,必须使用:
FM
在TO_CHAR函数的datetime格式元素中,此修饰符在日期格式模型中抑制后续字符元素(如MONTH)中的空格,并抑制后续数字元素(如MI)的前导零如果没有FM,字符元素的结果总是用空格右键填充到固定长度,数字元素总是返回前导零使用FM抑制空白填充,返回值的长度可能会有所不同
在您的特殊情况下:
v_huidigeDag := to_char(v_mathDatum, 'fmDAY');
可能重复的