我有一个名为的列DT_APP
,其中包含两种格式的日期
Sep 4 2012 6:19PM
2013-04-30 23:38.34
我需要将列中的 1) 转换为 2),但我需要它在,nvarchar(19)
因为数据类型在nvarchar(19)
.
我很欣赏它应该是Datetime
格式,但它被设置为nvarchar(19)
.
谢谢,
我有一个名为的列DT_APP
,其中包含两种格式的日期
Sep 4 2012 6:19PM
2013-04-30 23:38.34
我需要将列中的 1) 转换为 2),但我需要它在,nvarchar(19)
因为数据类型在nvarchar(19)
.
我很欣赏它应该是Datetime
格式,但它被设置为nvarchar(19)
.
谢谢,
因此,假设这些是您的列的唯一两种格式,那么您可以执行以下操作:
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]%'