我的问题类似于Stackoverflow中的其他一些问题,但它们都不适用于我。我的日期和时间列格式为1991-04-01 00:00:00.000
,我想将其转换为以下格式:19910401
我在下面尝试过以下代码:
Update [TestFamily].dbo.List
set dbo.List.DtBirth = convert(
varchar(10), cast(dbo.List.DtBirth as
datetime ),112)
执行后表示受影响的320104行,但实际上没有任何变化,日期格式保持不变。
我们将不胜感激。
答案 0 :(得分:1)
DateTime
数据没有格式。它们只是在显示时才更改为某种格式的值。因此,当您在SSMS中查看查询结果,在应用程序中显示它们,报告等时,会将其考虑在内。
显示日期几乎总是 显示层的作业,而不是数据库。我强烈建议在该级别(报告,应用程序等)而不是在SQL级别进行此更改。否则,您将遇到排序,过滤等问题。
答案 1 :(得分:0)
我认为您的问题是您正在尝试使用更新。 SQL更新更改值,而不是数据类型。您正在尝试创建不同的数据类型,char或varchar。 字段dbo.List.DtBirth可能是一个日期时间,您的更新不会改变它。您可以添加另一个字段,可能称为DTBirthAsVarChar varchar(8),然后根据日期字段更新该字段。
Update [TestFamily].dbo.List
set dbo.List.DTBirthAsVarChar = convert(
varchar(10), cast(dbo.List.DtBirth as
datetime ),112)
你也不需要在同一个语句中同时使用转换和强制转换,它们基本上都做同样的事情。