0

varchar(8) であるフィールド ADATE があり、次の形式になっています:yyyymmdd (20080402)

私はそれを次のようにしたい: 4/2/2008

私は次のことを試しました:

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

フォーマット桁を何に変更しても。

私は何が欠けていますか?

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

最初は文字列を日付にフォーマットし、2 回目は日付を文字列にフォーマットし直すので、それらを結合します。

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