「2013_04」などの「YYYY_m」という形式で EntryDate 列を取得しようとしています。
このコードは失敗しました
DATENAME (YYYY, EntryDate) + '_' + DATEPART (M, EntryDate)
DATEFORMAT を使用する試みも失敗し、M の後の ',' で構文エラーがあったと述べています。代わりにどのコードが機能しますか?
ありがとうございました。
「2013_04」などの「YYYY_m」という形式で EntryDate 列を取得しようとしています。
このコードは失敗しました
DATENAME (YYYY, EntryDate) + '_' + DATEPART (M, EntryDate)
DATEFORMAT を使用する試みも失敗し、M の後の ',' で構文エラーがあったと述べています。代わりにどのコードが機能しますか?
ありがとうございました。
select DATENAME (YYYY, EntryDate)
+ '_'
+ right('0' + convert(varchar(2),datepart (MM, EntryDate)), 2)
が追加を実行するDATEPART()
には、 の結果を文字列に変換する必要があります。+
参考までに-将来、「失敗」は何の意味もありません。次回は、受け取った実際のエラーを投稿してください。
どうdate_format()
ですか?
select date_format(EntryDate, '%&Y_%m')
これがMySQLのやり方です。あなたのコードは、SQL Server でこれを実行しようとしているように見えます。
編集:
以下は SQL Server で機能するはずです。
select DATENAME(year, EntryDate) + '_' + RIGHT('00' + DATEPART(month, EntryDate), 2)
個人的に、私は使用するかもしれませんconvert()
:
select replace(convert(varchar(7), EntryDate, 121), '-', '_')
例えば:
SELECT concat(EXTRACT(YEAR FROM '2015/1/1'), '_',
LPAD(extract(month from '2014/1/1'),2,'0')) AS OrderYear
これは