sql - 当参数标记是函数参数时无法派生参数信息
问题描述
在 Excel 中,在数据 > 属性下
然后在定义>命令文本下
我有一个 SQL 命令文本来生成数据表,但是当我使用以下查询字符串时出现此错误:
SELECT convert(datetime, (?) , 121)
(?) 是我将单元格设置为的参数,=TEXT(BE3,"mm/dd/yyyy")
它的datetime
值作为我datatype
在 SQL Server 中的该列是datetime
我的完整 sql 命令如下:
SELECT * FROM Student
WHERE GraduationDate
BETWEEN
(CASE
WHEN (GraduationDate Is Not Null)
THEN SELECT convert(datetime, (?) , 121)
ELSE''
END)
AND
(CASE
WHEN (GraduationDate Is Not Null)
THEN SELECT convert(datetime, (?) , 121)
ELSE''
END)
知道是什么导致这种情况发生吗?
解决方案
你的语法不正确。如果不出意外,子查询需要它们自己的括号。
你似乎想忽略null
毕业日期。好吧,这个逻辑就是这样做的:
SELECT s.*
FROM Student
WHERE GraduationDate BETWEEN convert(datetime, (?), 121) AND convert(datetime, (?), 121);
笔记:
- 我不鼓励您使用
BETWEEN
日期/时间值。Aaron Bertrand 很好地解释了原因。 - 如果您传入参数,它们应该已经是日期/时间值,因此不需要转换。
- 如果要包含
NULL
值,请添加OR GraduationDate IS NULL
.
推荐阅读
- upload - 框上传文件:“API 上传不包含文件部分”错误
- python - 如何在不匹配包含相同字符的字段的情况下查找和更改固定长度记录中的条目?前任。“史密斯”在史密瑟斯是真实的
- c++ - Win32 设备事件:在 DBT_DEVICEARRIVAL 事件上未收到 DBT_DEVTYP_VOLUME
- git - 无法使用 git-p4 从本地 master 提交更改到 perforce depo
- java - 等待 onPostExecute 完成以制作新适配器
- php - Symfony i18n 路由:部分语言支持
- java - 服务器端客户端JAVA游戏动作
- javascript - 展开时的 Angular Dropdown 显示在屏幕底部
- android - 如何使用自定义适配器将整数添加到列表视图
- android - 如何将图像从相机上传到服务器而不是图像选择器