将varchar日期类型转换为datetime错误SQL
我正在使用下面的SQL查询,并得到以下错误:Msg 242,级别16,状态3,第1行varchar数据类型的转换 对日期时间数据类型的更改导致值超出范围 我的SQL查询如下所示:将varchar日期类型转换为datetime错误SQL,sql,datetime,varchar,getdate,Sql,Datetime,Varchar,Getdate,我正在使用下面的SQL查询,并得到以下错误:Msg 242,级别16,状态3,第1行varchar数据类型的转换 对日期时间数据类型的更改导致值超出范围 我的SQL查询如下所示: SELECT customer_del_hist.customer_number, MAX(customer_del_hist.serve_location) AS serve_location, MAX(customer_del_hist.product_number) AS product_numbe
SELECT customer_del_hist.customer_number, MAX(customer_del_hist.serve_location) AS serve_location, MAX(customer_del_hist.product_number) AS product_number,
MAX(customer_del_hist.del_date) AS del_date, MAX(order_rte_bal.warehouse) AS warehouse, MAX(order_rte_bal.route_number) AS route_number,
MAX(order_rte_bal.route_day) AS route_day
FROM customer_del_hist INNER JOIN
inv_master ON customer_del_hist.product_number = inv_master.product_number INNER JOIN
order_header ON customer_del_hist.order_number = order_header.order_number INNER JOIN
order_rte_bal ON order_header.warehouse_number = order_rte_bal.warehouse AND order_header.route_number = order_rte_bal.route_number AND
order_header.route_day = order_rte_bal.route_day AND order_header.delivery_date = order_rte_bal.route_date
WHERE (customer_del_hist.del_date BETWEEN '5/01/2015' AND '7/31/2015') AND (inv_master.inventory_category IN ('02', '03', '60', '74')) AND
(customer_del_hist.customer_number NOT IN
(SELECT h2.customer_number
FROM customer_del_hist AS h2 INNER JOIN
inv_master AS i ON h2.product_number = i.product_number
WHERE (h2.del_date BETWEEN '6/01/2014' AND '4/31/2015') AND (i.inventory_category IN ('02', '03', '60', '74'))))
GROUP BY customer_del_hist.customer_number
我在必要的表格中查看了日期,它的显示类似于以下内容:2014-05-21 00:00:00.000。有没有关于变通或修复的想法 使用日期时间字符串进行强制转换和转换的行为由SET-DATEFORMAT控制。如果您的日期格式为dmy(日/月/年),您的文字“7/31/2015”可能会被解释为{月:31日,日:7日,年:2015},这是无效的日期 请看这里: 在这些情况下,有一件事可以帮助您,那就是始终对这些文本使用ISO8601格式。这将绕过强制转换和转换的解释行为 对于您的案例,您可以将其改写为:
customer_del_hist.del_date BETWEEN '2015-05-01' AND '2015-07-31'
问题是4月份只有30天,而不是31天 您确定该列中没有无效数据,可能类似于
2014-13-01 00:00:00.000