在SQL中转换日期/时间格式

时间:2015-10-23 13:31:51

标签: sql sql-server

我的问题类似于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行,但实际上没有任何变化,日期格式保持不变。

我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

SQL Server中的

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)

你也不需要在同一个语句中同时使用转换和强制转换,它们基本上都做同样的事情。

相关问题