繁体   English   中英

如何使用SQL命令在SQL Server 2005中打印给定日期编号的日期名称?

[英]How do you print the day name given a day number in SQL Server 2005 using SQL commands?

我希望能够传递诸如1、2、3或7之类的天数,并且它将返回诸如周日,周一,周二或周六的日名。 我知道可以使用case语句,但是我想使用SQL命令来做到这一点,这有可能吗?

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

寻找答案时,我已经对此问题发表了评论,但用户@harper建议我提交一个包含完整说明的新问题。

编辑:目前,除了一个之外,大多数情况下都为案例陈述提供了答案。 所以现在我再次在这里提出我的问题是

“我想使用SQL命令做到这一点,这有可能吗?”

尝试这个 :

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

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
SELECT DATENAME(DW,CAST(a AS INT))

在这里,我们可以改变价值为0至6
默认值是0星期一至6星期日。
如果我们使用a = 7,那么它将被计算为0 ,因为7-7 = 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

来源: SQL SERVER – UDF –获取星期功能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM