我希望能够传递一天中的数字,如1,2,3或7,它会返回日期名称,如星期日,星期一,星期二或星期六。我知道可以选择使用case
语句,但我想使用SQL命令执行此操作,这是否可能?
DECLARE @m VARCHAR
SET @m=1
SELECT CASE WHEN @m=1 THEN 'Sunday' END
我在寻找答案时已对此question发表了评论,但用户@harper建议我提交一个包含完整说明的新问题。
修改 除了一个之外,目前对案例陈述给出了答案。所以现在我再次提出我的问题是
“我想使用SQL命令执行此操作,这是否可能?”
答案 0 :(得分:5)
试试这个:
declare @m varchar
set @m=1
SELECT DATENAME(DW,CAST(@m AS INT))
答案 1 :(得分:2)
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
答案 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
答案 3 :(得分:0)
SELECT DATENAME(DW,CAST(a AS INT))
我们可以将 a 的值更改为 0到6
默认,0-星期一到6-星期日
如果我们使用 a = 7 ,那么它将被计算为 0 ,因为7-7 = 0。