gpt4 book ai didi

SQL 服务器 : error conversion of a varchar data type

转载 作者:行者123 更新时间:2023-12-04 23:58:46 24 4
gpt4 key购买 nike

我正在尝试运行 SQL 查询,但出现错误

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

代码:

SELECT 
ClientId,
DatePassed,
Lender
FROM
dbo.tbl_Profile_Mortgage
WHERE
DatePassed = '2011-04-28 00:00:00.000'

我已经这样转换了数据类型

SELECT 
ClientId,
Convert (Date, DatePassed)
Lender
FROM
dbo.tbl_Profile_Mortgage
WHERE
DatePassed = '2011-04-28 00:00:00.000'

然而,这仍然给我同样的错误

DatePassed 列的类型为 datetime null

如有任何建议,我们将不胜感激

最佳答案

从概念上讲,您认为where 子句在convert() 之前执行。但这不一定是查询的运行方式。唯一保证执行顺序的 SQL 语句是 case(然后不是所有时间)。

你可以试试这个:

SELECT ClientId,
(case when isdate(DatePassed) = 1 then Convert (Date, DatePassed) end),
Lender
FROM dbo.tbl_Profile_Mortgage
WHERE DatePassed = '2011-04-28 00:00:00.000';

编辑:

鉴于 DatePassed 已经是日期时间格式,那么您的错误是非常不寻常的。这不是该列转换的问题,因为不涉及varchar

我唯一能想到的就是常数。也许您对默认日期设置了一个奇怪的设置,它试图获取第 28 个月的第 4 天。如果是这样,您可以通过使用以下格式进行显式转换来轻松解决此问题:

SELECT ClientId,
Convert(Date, DatePassed),
Lender
FROM dbo.tbl_Profile_Mortgage
WHERE DatePassed = convert(date, '2011-04-28 00:00:00.000', 121);

Aaron Bertrand 在他的 blog 中对这个问题进行了相当广泛的讨论。 .顺便说一下,即使我认识到他提到的 YYYY-MM-DD 格式的问题,我仍然默认使用它。我认为这是 Microsoft 选择不承认此 ISO 标准格式的一个错误(但仅仅因为我认为这是一个错误并不一定能说服其他任何人)。

关于SQL 服务器 : error conversion of a varchar data type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23063972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com