2011-09-26 59 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。