【发布时间】:2018-09-17 09:23:12
【问题描述】:
所以,我仍在学习 SQL 的来龙去脉,并试图找出我做错了什么。
SELECT P.productid, P.productname, O.orderdate
FROM Production.Products AS P INNER JOIN
Sales.OrderDetails AS D ON P.productid = D.productid
INNER JOIN Sales.Orders AS O ON D.orderid = O.orderid
WHERE (O.orderdate NOT BETWEEN '2015-09-01' AND '2015-09-31');
它会产生以下错误:
从字符转换日期和/或时间时转换失败 字符串。
对此的任何帮助将不胜感激。
【问题讨论】:
-
发布确切的错误信息。
-
fwiw NOT BETWEEN '2015-09-01' AND '2015-09-31' 不会排除您需要从 1 日到 1 日之间使用的整个月份
-
这是错误信息:从字符串转换日期和/或时间时转换失败。
-
@Icodin 这些值从何而来?原始字符串,日期参数?你总是打算匹配一整个月吗?拼写错误的修复很容易。使查询对此类问题具有弹性需要更多细节。例如,如果值是字符串,不要使用字符串,使用
date参数。使用 EOMONTH 获取任何参数的一个月的最后一天。 -
不需要 SQL 知识。任何值得一提的编程语言都不应该将
2015-09-31识别为有效日期。
标签: sql sql-server tsql date datetime