甲骨文 - 获取星期几

时间:2013-10-08 09:51:19

标签: sql oracle

今天是星期二。

为什么我运行这个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 个答案:

答案 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