Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:用户定义函数(返回指定日期的星期日)_Sql_Sql Server - Fatal编程技术网

SQL Server:用户定义函数(返回指定日期的星期日)

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

我刚刚开始学习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 (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。我认为这在某种程度上应该与他们发布的代码具有相同的语义。