将 varchar 列转换为日期时间

dub*_*ech 4 sql-server-2008 sql-server type-conversion datetime

在 SQL Server 中,我有一个 varchar 列,其值例如:

 07/May/2012:00:06:22
 07/May/2012:00:06:22
 07/May/2012:00:06:22
 07/May/2012:00:06:22
 07/May/2012:00:06:22
Run Code Online (Sandbox Code Playgroud)
  • 如何将此列转换为具有实际日期时间的日期时间列?
  • 如果这是不可能的,我该如何创建一个新列并将这些值复制到其中但作为日期时间值?

Aar*_*and 8

假设其他月份的日期被截断为 3 个字符的月份:

 ALTER TABLE dbo.tablename ADD newcol DATETIME;

 UPDATE dbo.tablename
   SET newcol = CONVERT(DATETIME, 
    REPLACE(LEFT(varchar_col, 11), '/', ' ') 
        + ' ' + RIGHT(varchar_col, 8), 113);
Run Code Online (Sandbox Code Playgroud)

验证后,您可以删除 varchar_col,重命名 newcol,然后重新添加任何受影响的索引。