Sql 将nvarchar列更改为日期格式
我有一个名为Sql 将nvarchar列更改为日期格式,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,我有一个名为DT_APP的专栏,其中包含两种格式的日期 2012年9月4日下午6:19 2013-04-30 23:38.34 我需要将列中的1)转换为2),但我需要它位于nvarchar(19)中,因为数据类型位于nvarchar(19)中 我很感激它应该是Datetime格式,但是它被设置为nvarchar(19) 谢谢,因此,假设您的专栏只有这两种格式,那么您可以执行以下操作: SELECT CONVERT(NVARCHAR(19),CONVERT(DATETIME,DT_APP,100)
DT_APP
的专栏,其中包含两种格式的日期
2012年9月4日下午6:19
2013-04-30 23:38.34
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]%'
@KaisMalique那么你可能有不好的数据,而不仅仅是你说的格式。我真的帮不了你that@KaisMalique然后将一些数据发布到SQLFIDLE上进行测试it@KaisMalique你真的应该检查你的数据,或者就你的新问题问一个新问题。@KaisMalique当然,你不知道如何设置日期的格式,但你肯定数据是正确的。@KaisMalique:到目前为止,你有一些明智的建议。如果他们为你失败了,我们怎么能在没有看到数据的情况下提供帮助?布拉姆的观点是,你不应该期望我们仅仅相信你所说的数据是好的。我还可以说:这些建议很好(我是认真的!)。但是,您可以对它们进行测试,并根据您的数据查看它们是否失败,我们不能这样做。因此,请给我们一些东西来帮助我们,而不是发表毫无帮助的声明。(
数据很好
在这种情况下没有帮助。)