Sql-Server

將 varchar 列轉換為日期時間

  • September 12, 2018

在 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
  • 如何將此列轉換為具有實際日期時間的日期時間列?
  • 如果這是不可能的,我該如何創建一個新列並將這些值複製到其中但作為日期時間值?

假設其他月份的日期被截斷為 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);

驗證後,您可以刪除 varchar_col,重命名 newcol,然後重新添加任何受影響的索引。

您可能有一些數據不適合文件中某處的日期時間列。將列插入到帶有 varchar 或 navachar 欄位的臨時表中並查看數據。在載入到真實表之前,您可能需要調整其中的一些(或清除不良記錄)。

引用自:https://dba.stackexchange.com/questions/17904