SQL-server'WEEKDAY'不是公认的内置函数名称[关闭]

Posted

技术标签:

【中文标题】SQL-server\'WEEKDAY\'不是公认的内置函数名称[关闭]【英文标题】:SQL-server 'WEEKDAY' is not a recognized built-in function name [closed]SQL-server'WEEKDAY'不是公认的内置函数名称[关闭] 【发布时间】:2021-11-07 19:10:51 【问题描述】:

我正在使用大约一个月前(2021 年 8 月)下载的 SQL Server Management Studio v18.9.2。 我在 SO、SQLServerTutorial.net 和 w3schools.com 上搜索了此处的帮助,但无法弄清楚我做错了什么。

我试图在结果中获得三列:RentalIDStartTime(作为日期时间数据类型存在)和一个带有星期几的新列(星期一、星期二等) .自 2021 年 6 月以来,我已将查询限制为仅记录。

我试过这三个函数名:weekday、dw和w,大小写组合,都返回相同的错误:

SELECT RentalID, StartTime, DATENAME(WEEKDAY(StartTime)) AS DayOfWeek
FROM FullData
WHERE StartTime > '2021-05-31'

错误信息:'WEEKDAY' is not a recognized built-in function name

然后我得到一个错误:

DATENAME(WEEKDAY(StartTime)) AS DayOfWeek
FROM FullData
WHERE StartTime > '2021-05-31'

错误信息:Incorrect syntax near 'WEEKDAY'

然后我得到一个错误:

DATENAME(WEEKDAY, StartTime) AS DayOfWeek
FROM FullData
WHERE StartTime > '2021-05-31'

错误信息:Incorrect syntax near 'WEEKDAY'

当我尝试MONTH 函数时,我得到一个不同的错误:

SELECT RentalID, StartTime, DATENAME(MONTH(StartTime)) AS Month
FROM FullData
WHERE StartTime > '2021-05-31'
ORDER BY Month

错误消息:The datename function requires 2 argument(s). 我认为这两个参数是MONTHStartTime,但我猜不是。

【问题讨论】:

您尝试在第一个语句中像函数一样使用WEEKDAY,然后在后面的语句中省略SELECT。这两个在我看来都像是印刷错误。 “我正在使用 SQL Server Management Studio v18.9.2” 这与您使用的 SQL Server 版本无关。这就像在被问及您安装了哪个 Windows 版本时告诉别人您正在使用 Office 2013。 【参考方案1】:

您将日期部分用作函数调用,而不是作为 datename 函数的参数:

DATENAME(WEEKDAY, StartTime) AS DayOfWeek
-- Two args ----^

或者

DATENAME(MONTH, StartTime) AS [Month]
-- Two args --^

【讨论】:

Get Incorrect syntax near 'WEEKDAY' error with this code: DATENAME(WEEKDAY, StartTime) AS DayOfWeek FROM FullData WHERE StartTime > '2021-05-31'【参考方案2】:

DATENAME() 的正确语法有两个参数:

DATENAME(WEEKDAY, StartTime)

DATENAME(MONTH, StartTime)
         

【讨论】:

此代码仍然出现相同的错误:DATENAME(WEEKDAY, StartTime) AS DayOfWeek FROM FullData WHERE StartTime > '2021-05-31' @LisaNV 。 . .它工作正常:dbfiddle.uk/… 所以,很沮丧。我去掉了 WHERE 子句,它起作用了。 @LisaNV 一开始你错过了SELECT

以上是关于SQL-server'WEEKDAY'不是公认的内置函数名称[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

SQL-Server:备份集包含一个数据库的备份,而不是现有的

SQL-Server:是不是有相当于一般存储过程执行的触发器

将大型 XML 导入 SQL-Server 表的最快方法

SQL-Server 后端、MS Access 前端:连接

编写整个数据库 SQL-Server 的脚本

LAG 不是公认的内置函数名称