今天是星期二。
为什么我运行这条 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
像这样试试
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;
to_char(sysdate,'day') 的值实际上是 'tuesday',在 tuesday 之后有两个空格。Oracle 将该值填充为最长一天的长度,即星期三,即 9 个字符。
尝试
RTRIM(to_char(sysdate,'day'))
嗯,这个:
SELECT TO_CHAR(sysdate, 'Day') FROM dual;
在我的国家说“Wtorek”......也许你用你的语言而不是英语来获得本周的名字?
您可以使用以下命令检查数据库中设置的日期语言:
SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_DATE_LANGUAGE';
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