SQL Server:用户定义函数(返回指定日期的星期日)
我刚刚开始学习UDF,我对以下练习问题有疑问: 创建一个用户定义的函数,该函数将返回给定日期的星期数 作为一个例子,我们得到了以下信息:SQL Server:用户定义函数(返回指定日期的星期日),sql,sql-server,Sql,Sql Server,我刚刚开始学习UDF,我对以下练习问题有疑问: 创建一个用户定义的函数,该函数将返回给定日期的星期数 作为一个例子,我们得到了以下信息: USE [AdventureWorks]; GO CREATE FUNCTION dbo.fnIsWeekday (@p_date [DATETIME]) RETURNS [BIT] AS BEGIN DECLARE @weekday [BIT] IF (SELECT DATENAME(dw, @p_date)) IN
USE [AdventureWorks];
GO
CREATE FUNCTION dbo.fnIsWeekday
(@p_date [DATETIME])
RETURNS [BIT] AS
BEGIN
DECLARE @weekday [BIT]
IF (SELECT DATENAME(dw, @p_date)) IN (N'Friday', N'Saturday', N'Sunday')
BEGIN
SET @weekday = 0
END
ELSE
BEGIN
SET @weekday = 1
END
RETURN (@weekday)
END;
GO
我的问题是:如何更改此函数以适应一周中的每一天,而不是将它们分组?您不需要真正的自定义项。但既然你需要写一个因为练习需要
return (datepart(dw,@p_date))
是您的UDF需要做的全部。如果您在不使用英语的SQL Server实例上运行此代码,祝您好运……您的语法不正确。应该是select datepart(dw,@p_date),语义也不正确。这将返回一个介于
1
和7
之间的整数,然后隐式转换为位。i、 e.无论@p_date
@JohnCappelletti的值是多少,它总是返回1
。@谢谢你,修正了。@MartinSmith i没有打算重写整个函数。OP在任何情况下都必须更改函数的返回类型。啊-对不起,我没有正确阅读Q。我认为这在某种程度上应该与他们发布的代码具有相同的语义。