2011-09-26 61 views
2

我希望能夠在一天內數傳像1,2,3或7,它會回來的那天名稱,如週日,週一,週二或週六。我知道有使用case語句,但我想做到這一點使用SQL命令,這會不會在所有可能的選項?如何在SQL Server 2005中使用SQL命令打印日期名稱?

DECLARE @m VARCHAR 
SET @m=1 
SELECT CASE WHEN @m=1 THEN 'Sunday' END 

尋找一個答案,但用戶@harper建議我應該提交一個新的問題,以完整的描述時,我已經發表了評論question

編輯: 目前有關案例陳述的答案大多除了一個。所以現在我再次把我的問題在這裏是

「我想這樣做使用SQL命令,這是可能的嗎?」

回答

5

試試這個:

declare @m varchar 
set @m=1 
SELECT DATENAME(DW,CAST(@m AS INT)) 
+0

@Chaudhari它返回我週二和我已經在我的問題提到,我想對我來說1日 – rahularyansharma

+0

返回'martedì'? 'SET DATEFIRST 4設置語言意大利語;申報@m VARCHAR集@ M = 1 SELECT DATENAME(DW,CAST(@m AS INT))'(NB:並不真的 - 只是指出該結果將取決於這些設置) –

+1

默認情況下,0 =星期一,1 =星期二等等,所以你可以做一件事。你可以從傳遞的值中減去2,然後你將得到需要的結果。見http://msdn.microsoft.com/ - SELECT DATENAME(DW,CAST(@m AS INT)-2) –

0
CREATE FUNCTION dbo.udf_DayOfWeek(@dtDate DATETIME) 
RETURNS VARCHAR(10) 
AS 
BEGIN 
DECLARE @rtDayofWeek VARCHAR(10) 
SELECT @rtDayofWeek = CASE DATEPART(weekday,@dtDate) 
WHEN 1 THEN 'Sunday' 
WHEN 2 THEN 'Monday' 
WHEN 3 THEN 'Tuesday' 
WHEN 4 THEN 'Wednesday' 
WHEN 5 THEN 'Thursday' 
WHEN 6 THEN 'Friday' 
WHEN 7 THEN 'Saturday' 
END 
RETURN (@rtDayofWeek) 
END 
GO 

-- Call this function like this: 
SELECT dbo.udf_DayOfWeek(GETDATE()) AS DayOfWeek 

orignally:SQL SERVER – UDF – Get the Day of the Week Function

+2

'DATEPART(weekday'依賴於'@@ DATEFIRST' –

1

的SQL Server Denali車型有CHOOSE功能,這將使更加簡潔。同時在UDF內部使用CASE

CREATE FUNCTION dbo.WeekDay(@d int) 
RETURNS VARCHAR(9) 
WITH SCHEMABINDING, RETURNS NULL ON NULL INPUT 
AS 
BEGIN 
RETURN 
(
SELECT 
    CASE @d 
     WHEN 1 THEN 'Sunday' 
     WHEN 2 THEN 'Monday' 
     WHEN 3 THEN 'Tuesday' 
     WHEN 4 THEN 'Wednesday' 
     WHEN 5 THEN 'Thursday' 
     WHEN 6 THEN 'Friday' 
     WHEN 7 THEN 'Saturday' 
    END 
) 
END 
0
SELECT DATENAME(DW,CAST(a AS INT)) 

在這裏,我們可以在爲0-6
默認,0週一改的值至6日。
如果我們使用a = 7那麼它將被計算爲,因爲7-7 = 0。