2013-10-08 95 views
2

今天是星期二。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 
+2

它,因爲嵌入式空間,使用'FmDay'會做的更好這裏。 – ajmalmhd04

+2

如果您對函數返回的內容有疑問,請嘗試使用Dump()檢查它。 –

回答

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; 

OR爲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; 
+0

謝謝,這個工程。爲什麼要填充結果? – shakedown7

+1

+1,使用:'to_char(sysdate,'FmDay')' – ajmalmhd04

+0

@ ajmalmhd04,謝謝你的建議。我在我的回答中添加了相同的內容。 – Dba

0

那麼,這:

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

說 「Wtorek」 在我的國家......也許你在你的語言獲得一週的名字,不是英文?

可以使用檢查什麼日期語言與數據庫中的設置:

SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_DATE_LANGUAGE'; 
0

to_char(sysdate,'day')的值實際上是「星期二」,兩個空間在尾部呃星期二。 Oracle將值填入最長的一天,即星期三,這是九個字符的長度。

嘗試

RTRIM(to_char(sysdate,'day')) 
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