Sql server 从字符串转换日期和/或时间时,强制转换为日期,然后转换失败

Sql server 从字符串转换日期和/或时间时,强制转换为日期,然后转换失败,sql-server,Sql Server,我有一个varchar字段,它应该是按需求指定的日期,它是手动加载的,并且没有正确输入值 我使用下面的语句,但是 从字符串转换日期和/或时间时,转换失败 有人能帮我吗 谢谢。假设您有两种不同的格式 示例 Declare @YourTable Table ([YourCol] varchar(50)) Insert Into @YourTable Values ('2009-03-18') ,('18/03/09') Select * ,AsDate = case whe

我有一个
varchar
字段,它应该是按需求指定的日期,它是手动加载的,并且没有正确输入值

我使用下面的语句,但是

从字符串转换日期和/或时间时,转换失败

有人能帮我吗


谢谢。

假设您有两种不同的格式

示例

Declare @YourTable Table ([YourCol] varchar(50))  Insert Into @YourTable Values 
 ('2009-03-18')
,('18/03/09')
 
Select * 
      ,AsDate = case when YourCol like '__/__/__' 
                     then try_convert(date,YourCol,3)
                     else try_convert(date,YourCol)
                end
 From  @YourTable
结果

YourCol     AsDate
2009-03-18  2009-03-18
18/03/09    2009-03-18

您需要为每种格式创建一个特定的
CONVERT
,希望只有两种格式…根据问题指南,请不要发布代码、数据、错误消息等的图像-将文本复制或键入问题。请保留图像用于图表或演示渲染错误,这是无法通过文本准确描述的。嗨,约翰,太棒了!!很有效,非常感谢@史蒂文森总是乐于帮忙。正如你现在所知道的,将日期存储为可变格式字符串是有风险的。@史蒂文森,如果你发现这个答案是有用的,你可能会考虑接受它。
YourCol     AsDate
2009-03-18  2009-03-18
18/03/09    2009-03-18