Sql 从字符串转换日期和/或时间时,转换失败,即使结果正确

Sql 从字符串转换日期和/或时间时,转换失败,即使结果正确,sql,sql-server,tsql,Sql,Sql Server,Tsql,这是我的疑问: set dateformat mdy; select cast([File Date] as date) as 'test' from gpdetail 这将产生以下错误: Msg 241,16级,状态1,第2行 从字符串转换日期和/或时间时,转换失败 你知道如何消除这个错误吗?任何备受赞赏的帮助都已经在这方面停留了很长时间: 但是,在“结果”选项卡下,它会显示正确的结果 这是实际数据从isdate功能开始: select [File Date] from gpdeta

这是我的疑问:

set dateformat mdy;
    select cast([File Date] as date) as 'test' from gpdetail
这将产生以下错误:

Msg 241,16级,状态1,第2行 从字符串转换日期和/或时间时,转换失败

你知道如何消除这个错误吗?任何备受赞赏的帮助都已经在这方面停留了很长时间:

但是,在“结果”选项卡下,它会显示正确的结果


这是实际数据

从isdate功能开始:

select [File Date]
from gpdetail
where isdate([File Date]) = 0;
这可能会发现日期不一致的地方

如果只想忽略格式不正确的字符串,请尝试:

select (case when isdate([File Date]) = 1 
             then cast([File Date] as date) 
        end) as test
from gpdetail

从isdate功能开始:

select [File Date]
from gpdetail
where isdate([File Date]) = 0;
这可能会发现日期不一致的地方

如果只想忽略格式不正确的字符串,请尝试:

select (case when isdate([File Date]) = 1 
             then cast([File Date] as date) 
        end) as test
from gpdetail

您可能在某个地方有一条格式不正确的记录,因此无法转换整个内容。如果您使用SQL 2012,请尝试转换并检查结果,以查看哪一行返回null,这将是您的“坏”记录以下操作是否对您更有效:convertdatetime、[File Date],1表中有多少行?就你给我们看的那6个?很可能是下一排失败了。向我们展示它包含的内容。消除错误的最好方法是。对你所发表的问题的任何回答,我都会考虑工作,而不是解决方案。在纠正数据未正确存储的根本问题之前,您将继续遇到问题。您可能在某个地方有一条格式不正确的记录,因此无法转换整个内容。如果您使用SQL 2012,请尝试转换并检查结果,以查看哪一行返回null,这将是您的“坏”记录以下操作是否对您更有效:convertdatetime、[File Date],1表中有多少行?就你给我们看的那6个?很可能是下一排失败了。向我们展示它包含的内容。消除错误的最好方法是。对你所发表的问题的任何回答,我都会考虑工作,而不是解决方案。在您纠正数据存储不正确的根本问题之前,您将继续遇到问题。@谢谢先生的解释,它也适用于我。:我面临的一个微妙的烦恼是避免ELSE子句,否则将无条件地进行求值,从而导致错误241…@谢谢先生的解释,它也适用于我我遇到的一个微妙的麻烦是避免ELSE子句,否则将无条件地计算它,从而导致错误241。。。