【发布时间】:2014-10-13 17:08:46
【问题描述】:
在 SQL Server 中有一个表,其中包含一个带有日期数据的 varchar 列。不幸的是,日期的格式多种多样。
2012-05-01
27/05/2012
07MAY2014
19/07/13
可能还有其他人,但到目前为止我遇到的就是这些。
我需要将这些压缩到另一个表中的datetime 列中,因此我一直在尝试将它们选择为标准日期时间值。起初,我认为这很容易:
UPDATE myTable
SET myDateColumn = CONVERT(DATETIME, myDateColumn, 103)
WHERE ISDATE(myDateColumn) = 0
但问题在于 SQL Server 将 dd/mm/yy 和 dd/mm/yyyy 视为单独的格式。前者是代码 3,后者是代码 103。所以无论我以哪种方式运行该更新,它都会以相反的格式阻塞。
有什么方法可以根据日期格式选择/更新,并将所有这些日期转换为单一有效的DateTime 格式?
【问题讨论】:
-
日期转换是 SQL Server(和其他)的一个弱点。如果您可以使用 CLR,那么您可以编写 .NET 代码来解析您的日期时间,这可能是最好的方法。在解析日期之前,您将不得不做一些笨拙的工作来尝试确定日期的格式?
标签: sql sql-server tsql date datetime