2015-07-03 52 views
-3

我試圖創建一個函數,返回指定日期的星期幾,並且我嘗試了一個在底部但是不成功的函數。創建一個返回指定日期的星期幾的函數

SELECT DAYOFWEEK(‘2015-07-04’); 
+0

[How to get the week day name from a date?](http://stackoverflow.com/questions/8004645/how-to-get-the-week-day-name-from-a-日期) –

+0

不同的DBMS使用不同風格的SQL。日期和時間通常是不同的地方。所以當你的谷歌功能,在你的情況下指定DBMS,甲骨文。您的SQL在Oracle中無效,但可能在另一個DBMS中有效。 –

+0

感謝您的反饋,但是,我從Oracle網站獲得了該語法,並且我只是粘貼並複製了它,但仍然無法正常工作。 – SGIL

回答

1

使用TO_CHAR了點。

select 
    to_char(date'2015-07-04', 'Day'), 
    to_char(date'2015-07-04', 'Day', 'NLS_DATE_LANGUAGE=american'), 
    to_char(date'2015-07-04', 'Day', 'NLS_DATE_LANGUAGE=german'), 
    to_char(date'2015-07-04', 'DY'), 
    to_char(date'2015-07-04', 'D') -- result depends on NLS_TERRITORY which you cannot specify here unfortunately 
from dual; 

在SQL字符串分隔符是」,但我想這只是一個複製粘貼&錯誤? Oracle中的日期文字以DATE開頭。要在Oracle中選擇單個值,請從DUAL中選擇。你可以選擇指定一種語言,當你想看到星期幾的名字。至於日數,這取決於會議設置,不幸的是,1週日或週一。

+1

週日和週一是一週中最常見的開始日期。然而,週六(大多數阿拉伯國家)甚至週五(孟加拉國)的星期開始的地區爲 –

+1

@Wernfried:哇,即使如此。我不知道這一點。我從不使用'D'來取決於會話,但總是使用'​​DY',語言設置爲'英語'以便了解工作日,因爲這可以保證在每次安裝中都能正常工作,而不受任何設置的影響。 –

+0

@ThorstenKettner,非常感謝。我錯過的是FROM命令和不同的格式。 – SGIL

0

嘗試: 選擇TO_CHAR(TO_DATE( '2015年7月4日', 'YYYY-MM-DD'), '天') 我認爲它應該工作。

從推介: How to get the week day name from a date?

+0

您不應該依賴您的特定於語言環境的NLS設置。對於NLS_DATE_LANGUAGE不同的人可能不會有同樣的效果。 –

+0

是的,我同意。謝謝你指出。但問題具體是'2015-07-04'。你如何回答它? – abhisekG

+0

@abhisekG,感謝您的參考,但它缺少一個FROM行,沒有它就無法工作。謝謝 – SGIL

相關問題