2016-04-12 9 views
2

私のクエリに関しては問題があります。もともとはMYSQLのコードがありますが、SQL Serverに移行しました。 SQL SERVERに直接%x-%uがあるかどうかわかりません。MYSQL date_format '%x-%u'はSQL Serverで同等です

select date_format(date,'%x-%u') AS DATE from date_info WHERE Status = 1; 

YEARは、データベースとWEEK NUMBERから今年でどこ問合せは、YEAR-WEEKNUMBERを返すべき値と、月曜日に応じて、週数は、週の最初の日です。

dateのサンプル値は2008-01-05 09:48:03です。

そして、結果は2008-1です。

SQL ServerでDATEPART関数とFORMAT関数を試しましたが、私が望むソリューションが見つかりませんでした。私はDATEPART(ISOWK,date)を使用して見つけましたが、週番号だけを返します。

私は2008-1結果が欲しいです。

誰もが私にこれを助けることができますか?

答えて

1

DATEPART()isowkの形式を使用して、年を返すようにしてください。

SELECT cast(datepart(yyyy,[date]) as char(4)) + '-' + cast(datepart(isowk,[date]) as char(2)) AS DATE as date 
FROM date_info 
WHERE Status = 1 

@ ZoharPeledのコメントでは、このクエリはcharへのキャストが必要でしたが、これは動作中のクエリです。

+0

これを実行しようとしましたが、2008年だけを返します。2008-1ではありません。しかし、クエリにはエラーはありません。 :)どうしてこんなことが起こるの? – WhiteMark

+0

@WhiteMark今すぐお試しください。 – sagi

+0

年にキャストをchar(4)として追加し、週にchar(2)としてキャストしてみましょう: 'CAST(DATEPART(YEAR、[date])をchar(4))+ ' - ' + CAST(DATEPART [日付](ISO_WEEK、[日付])をchar(2)) ' –