SQL Server中的日期格式不断出现

时间:2013-02-25 16:39:01

标签: sql sql-server

我有一个字段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语句更改为:

convert(date,adate,101)

我总是得到:

  

2008-04-02

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

我错过了什么?

2 个答案:

答案 0 :(得分: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 with Demo

答案 1 :(得分:1)

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

select convert(varchar(10), convert(date, adate), 101)