SQL Server调用DATENAME提示WEEKDAY不是内置函数问题求助
正确实现代码
直接使用以下语句即可实现需求:
SELECT RentalID, StartTime, DATENAME(WEEKDAY, StartTime) AS DayOfWeek FROM FullData WHERE StartTime >= '2021-06-01'
如果需要返回数字形式的星期序号,可将DATENAME替换为DATEPART。
报错原因拆解
- 错误1:DATENAME函数参数格式误用
SQL Server中
DATENAME的标准语法为DATENAME(日期部分参数, 日期字段),WEEKDAY/DW/W都属于固定的日期部分参数选项,本身不是函数,不能在后面加括号包裹日期字段。你之前写的DATENAME(WEEKDAY(StartTime))属于语法错误,系统会将WEEKDAY识别为未定义的自定义函数,因此报「WEEKDAY不是可识别的内置函数名」。
测试MONTH时报「datename函数需要2个参数」也是同类问题:MONTH(StartTime)是独立的取月份函数,你将它作为唯一参数传入DATENAME,相当于只给函数传了1个参数,不符合参数要求。
- 错误2:SQL语句缺失基础关键字
你后续两次调整的代码都漏掉了查询语句必需的开头
SELECT关键字,属于基础语法错误,因此触发「WEEKDAY附近有语法错误」的提示。你第三次调整时已经写对了DATENAME(WEEKDAY, StartTime)的参数格式,补全SELECT关键字即可正常运行。
内容的提问来源于stack exchange,提问作者LNV
相关产品推荐
相关产品推荐

