0

我有一个字段 ADATE,它是一个 varchar(8),格式如下:yyyymmdd (20080402)

我想让它看起来像:2008 年 4 月 2 日

我尝试了以下方法:

select convert(varchar(8),adate,101) from myTable
 where  
AYEAR= ISNULL('2008', ayear)
and active = 'y'

但结果仍然是:

20080402

如果我将转换语句更改为:

convert(date,adate,101)

我总是得到:

2008-04-02

无论我将格式数字更改为什么。

我错过了什么?

4

2 回答 2

2

您需要先将其转换为您想要的convert格式aDatedatetime

select convert(varchar(10), cast(adate as datetime), 101)
from myTable
where AYEAR= ISNULL('2008', ayear)
  and active = 'y'

或者:

select convert(varchar(10), convert(datetime, adate), 101)
from myTable
where AYEAR= ISNULL('2008', ayear)
  and active = 'y'

请参阅带有演示的 SQL Fiddle

于 2013-02-25T16:43:28.247 回答
1

第一次,您将字符串格式化为日期,第二次,您将日期格式化回字符串,因此将它们组合起来:

select convert(varchar(10), convert(date, adate), 101)
于 2013-02-25T16:43:48.320 回答