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 上搜索了此处的帮助,但无法弄清楚我做错了什么。
我试图在结果中获得三列:RentalID
、StartTime
(作为日期时间数据类型存在)和一个带有星期几的新列(星期一、星期二等) .自 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).
我认为这两个参数是MONTH
和StartTime
,但我猜不是。
【问题讨论】:
您尝试在第一个语句中像函数一样使用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:备份集包含一个数据库的备份,而不是现有的