2013-07-15 56 views
-7

我有一个叫DT_APP列其中包含两种格式更改nvarchar列到日期格式

  1. Sep 4 2012 6:19PM
  2. 2013-04-30 23:38.34

我需要转换1)到2)日期该列,但我需要它在nvarchar(19)作为数据类型在nvarchar(19)

我很感谢它应该在Datetime格式,但它已被设置为nvarchar(19)

感谢,

回答

6

因此,假设这些是你列的只有两种格式,那么你就可以做到以下几点:

SELECT CONVERT(NVARCHAR(19),CONVERT(DATETIME,DT_APP,100),120) 
FROM YourTable 
WHERE DT_APP LIKE '%[aA-zZ]%' 

修订

好吧,如果你想另一列,那么你可以先创建它,然后填写值:

-- First create a new column 
ALTER TABLE YourTable 
ADD DT_APP2 DATETIME; 

-- Fill that column with DATETIME values 
UPDATE YourTable 
SET DT_APP2 = CASE WHEN DT_APP LIKE '%[aA-zZ]%' 
       THEN CONVERT(DATETIME,DT_APP,100) 
       ELSE CONVERT(DATETIME,DT_APP,120) END 

之后,您可以检查该列以查看这些值是否正确,然后您应该删除DT_APP列。

更新2 如果您只需要更新当前值,那么就这样做:

UPDATE YourTable 
SET DT_APP = CONVERT(NVARCHAR(19),CONVERT(DATETIME,DT_APP,100),120) 
WHERE DT_APP LIKE '%[aA-zZ]%' 
+0

谢谢Lamak但我需要的实际列转换为YYYY-MM-DD HH:MM:SS所以我有一个统一的列格式而不是两个。谢谢。 – Djbril

+0

@KaisMalique更新了我的答案 – Lamak

+0

我需要它在同一列中。我需要它在Nvarchar(19)。谢谢。 – Djbril