在 SQL Server 中从 varchar 转换为日期

新手上路,请多包涵

这看起来很容易解决,但我似乎无法弄清楚为什么这对我不起作用。我有一列包含这样的数据:

 DateField
----------
12/16/2016
11/06/2016

我要做的就是从 varchar 转换为 date 列,但我收到此错误:

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

这是我的简单查询:

 select convert (date, DateField) as convertedField
from myTable

原文由 moe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

你给出的两个例子没有错。您的表中有一些无法转换为日期的错误日期。

使用 TRY_CONVERT 函数用于错误日期,它将返回 NULL

 select TRY_Convert(date,DateField)
From myTable

您应该始终将日期存储在 DATE/DATETIME 数据类型中。

如果您想查看无法转换为日期的记录,那么

select DateField
From myTable
Where TRY_Convert(date,DateField) IS NULL

原文由 Pரதீப் 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果使用特定的日期格式,例如 mm/dd/yyyy 您可以在 Convert() 中指定它,函数如下

CONVERT(DATETIME,DATAFIELD,101)

如果仍然无法正常工作,请使用 TRY_CONVERT() 来获取哪些行引发了此异常:

 SELECT *
FROM TBL
WHERE TRY_CONVERT(DATETIME, DATAFIELD, 101) IS NULL

这将返回无法转换的行

TRY_CONVERT() 将返回 NULL 如果转换失败

在此处阅读有关 DateTime 格式的更多信息: SQL Server CONVERT() 函数教程

阅读 TRY_CONVERT MSDN 文章

原文由 Hadi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进