今天是星期二。
为什么我运行这个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
答案 0 :(得分:7)
试试这个,
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;
答案 1 :(得分:1)
to_char(sysdate,'day')的值实际上是'星期二',在星期二之后有两个空格。 Oracle将值填充为最长的一天的长度,即周三,即9个字符。
试
RTRIM(to_char(sysdate,'day'))
答案 2 :(得分:0)
嗯,这个:
SELECT TO_CHAR(sysdate, 'Day') FROM dual;
在我的国家说“Wtorek”...也许你用你的语言得到了一周的名字,而不是用英语?
您可以使用以下方法检查数据库中的DATE LANGUAGE:
SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_DATE_LANGUAGE';
答案 3 :(得分: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