Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 如何将一周中的某一天与输入IF语句进行比较?_Date_Plsql - Fatal编程技术网

Date 如何将一周中的某一天与输入IF语句进行比较?

Date 如何将一周中的某一天与输入IF语句进行比较?,date,plsql,Date,Plsql,我需要使用IF将日期(日期格式)与字符串“SUNDAY”(即今天)进行比较。 如果今天是星期天,则代码仍将打印ELSE语句 今天是星期天,但它仍然说今天不是星期天 默认情况下,到_char(datetime)的输出是空白填充的,应该是IF语句而不是ELSE语句: SQL> select '"'||to_char(sysdate,'DAY')||'"' as actual_value from dual; ACTUAL_VALUE ----------------------------

我需要使用IF将日期(日期格式)与字符串“SUNDAY”(即今天)进行比较。 如果今天是星期天,则代码仍将打印ELSE语句 今天是星期天,但它仍然说今天不是星期天


默认情况下,
到_char(datetime)
的输出是空白填充的,应该是IF语句而不是ELSE语句:

SQL> select '"'||to_char(sysdate,'DAY')||'"' as actual_value from dual;

ACTUAL_VALUE
--------------------------------------
"SUNDAY   "
使用
fm
修饰符可以避免这种情况:

SQL> select '"'||to_char(sysdate,'fmDAY')||'"' as actual_value from dual;

ACTUAL_VALUE
--------------------------------------
"SUNDAY"
但是,如果会话未设置为默认为英语,则指定日期语言更安全(并且指定较短的格式更有效):

更短(“DY”而不是“DAY”)和更安全(确保“SUN”而不是“SON”、“DIM”等):


默认情况下,
到_char(datetime)
的输出为空白填充:

SQL> select '"'||to_char(sysdate,'DAY')||'"' as actual_value from dual;

ACTUAL_VALUE
--------------------------------------
"SUNDAY   "
使用
fm
修饰符可以避免这种情况:

SQL> select '"'||to_char(sysdate,'fmDAY')||'"' as actual_value from dual;

ACTUAL_VALUE
--------------------------------------
"SUNDAY"
但是,如果会话未设置为默认为英语,则指定日期语言更安全(并且指定较短的格式更有效):

更短(“DY”而不是“DAY”)和更安全(确保“SUN”而不是“SON”、“DIM”等):


问题是
到字符(…,'DAY')
。它返回一个固定长度的字符串,与一周中的哪一天无关。长度取决于
NLS\u日期\u语言
。例如,对于英语,一周中最长的一天的名称是星期三,共九个字符。然后,对于一周中的其他任何一天,
TO_CHAR(…,'day')
返回一个长度相同的字符串(英语为九个字符),根据需要右键填充空格

修复代码的最简单方法是将比较的左侧包装在
TRIM()


您的代码中有很多奇怪的东西(例如,在
ELSE
分支中,您应该说“今天不是星期天”,而不是“今天不是……不管TO_CHAR返回了什么”),但这不是您所要求的。上面给出了您问题的答案,不再赘述。

问题是
to_CHAR(…,'DAY')
。它返回一个固定长度的字符串,与一周中的哪一天无关。长度取决于
NLS\u日期\u语言
。例如,对于英语,一周中最长的一天的名称是星期三,共九个字符。然后,对于一周中的其他任何一天,
TO_CHAR(…,'day')
返回一个长度相同的字符串(英语为九个字符),根据需要右键填充空格

修复代码的最简单方法是将比较的左侧包装在
TRIM()


您的代码中有很多奇怪的东西(例如,在
ELSE
分支中,您应该说“今天不是星期天”,而不是“今天不是……不管TO_CHAR返回了什么”),但这不是您所要求的。上面给出了您问题的答案,没有更多。

请将您的代码添加到问题中,而不是链接到代码屏幕。我尝试过,但它一直说我的代码格式不正确,请将您的代码添加到问题中,而不是链接到代码屏幕快照。我尝试过,但它一直说我的代码格式不正确,这是不正确的。