Sql server 在SQL Server中将varchar转换为日期字段

Sql server 在SQL Server中将varchar转换为日期字段,sql-server,Sql Server,我知道这是一个非常常见的问题,并尝试使用类似问题的解决方案。然而,我似乎不能使它工作 我有一个包含日期的列,但它是varchar数据类型 数据如下所示: startdate ----------- 15/01/2007 29/06/1998 07/12/2001 等等 我尝试了以下命令 try_convert(datetime, startdate) as 'startdate' 但即使在原始列中填充了日期,它也会返回大量空值 有人能帮忙吗?该方法接受三个参数:数据类型、表达式和样式。 您需

我知道这是一个非常常见的问题,并尝试使用类似问题的解决方案。然而,我似乎不能使它工作

我有一个包含日期的列,但它是varchar数据类型

数据如下所示:

startdate
-----------
15/01/2007
29/06/1998
07/12/2001
等等

我尝试了以下命令

try_convert(datetime, startdate) as 'startdate'
但即使在原始列中填充了日期,它也会返回大量空值

有人能帮忙吗?

该方法接受三个参数:数据类型、表达式和样式。 您需要使用Style参数:

try_convert(datetime, startdate, 103) as 'startdate' -- 103 is dd/MM/yyyy

此外,应该将日期值存储为date,而不是varchar。
有关更多信息,请阅读Aaron Bertrand的

这些空值是因为无法将值转换为日期时间。您确实应该将日期存储在适当的数据类型中。由于某些原因,将日期存储为文本是很常见的,并且由于这样的原因几乎总是很糟糕。您能找到一些返回null的值吗?如果您得到的是null返回值,并且您不想要它们,我建议检查这些结果。运行以下查询并查看返回数据;你很快就会明白为什么会这样s失败:从[YourTable]中选择startdate,其中TRY_CONVERTdatetime,startdate为空;我建议使用datetime20数据类型-试试这个try\u convertdatetime20,startdate作为“startdate”-这会返回更多可用值吗?