3

今天是星期二。

为什么我运行这条 SQL 语句时,它说不是星期二?

SELECT 
CASE 
WHEN TO_CHAR(sysdate, 'Day') = 'Tuesday' THEN 'Its Tuesday'
ELSE 'Its Not Tuesday'  
END AS case_result,
TO_CHAR(sysdate, 'Day') AS day
FROM DUAL

回报:

CASE_RESULT DAY
It's Not Tuesday    Tuesday
4

4 回答 4

8

像这样试试

SELECT CASE 
       WHEN trim(TO_CHAR(SYSDATE, 'Day')) = 'Tuesday' THEN 'Its Tuesday'
       ELSE 'Its Not Tuesday'  
       END AS case_result,
       TO_CHAR(SYSDATE, 'Day') AS DAY
FROM  DUAL;

或者按照 ajmalmhd04 的建议,你可以试试FmDay

SELECT CASE 
       WHEN TO_CHAR(SYSDATE, 'FmDay') = 'Tuesday' THEN 'Its Tuesday'
       ELSE 'Its Not Tuesday'  
       END AS case_result,
       TO_CHAR(SYSDATE, 'Day') AS DAY
FROM  DUAL;
于 2013-10-08T09:55:55.463 回答
2

to_char(sysdate,'day') 的值实际上是 'tuesday',在 tuesday 之后有两个空格。Oracle 将该值填充为最长一天的长度,即星期三,即 9 个字符。

尝试

RTRIM(to_char(sysdate,'day'))
于 2013-10-08T10:00:17.893 回答
0

嗯,这个:

SELECT TO_CHAR(sysdate, 'Day') FROM dual;

在我的国家说“Wtorek”......也许你用你的语言而不是英语来获得本周的名字?

您可以使用以下命令检查数据库中设置的日期语言:

SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_DATE_LANGUAGE';
于 2013-10-08T09:55:05.187 回答
0
SELECT 
CASE 
WHEN rtrim(TO_CHAR(sysdate, 'Day')) = 'Tuesday' THEN 'Its Tuesday'
ELSE 'Its Not Tuesday'  
END AS case_result,TO_CHAR(sysdate, 'Day') AS day
FROM DUAL
于 2013-10-08T10:23:14.113 回答