![](/img/trans.png)
[英]How do change this procedure to delete the records day by day in 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.