値を選択したい=201301
select getdate(), cast(datepart(year, getdate()) as varchar(4))+cast(datepart(MONTH, getdate()) as varchar(2))
戻ります20131
これを行う通常の方法は何ですか?
値を選択したい=201301
select getdate(), cast(datepart(year, getdate()) as varchar(4))+cast(datepart(MONTH, getdate()) as varchar(2))
戻ります20131
これを行う通常の方法は何ですか?
SELECT CONVERT(nvarchar(6), GETDATE(), 112)
SELECT LEFT(CONVERT(varchar, GetDate(),112),6)
実際には、MS SQL 2014 を使用できない限り、これが必要なものを取得するための適切な方法です (最終的に日付時刻のカスタム フォーマット文字列が有効になります)。
yyyymm
の代わりに取得するには、次のyyyym
小さなトリックを使用できます。
select
right('0000' + cast(datepart(year, getdate()) as varchar(4)), 4)
+ right('00' + cast(datepart(month, getdate()) as varchar(2)), 2)
の一部を取得するよりも高速で信頼性が高くなりconvert(..., 112)
ます。
日付をさまざまな形式に変換できます。たとえば、次のようになります。
CONVERT(NVARCHAR(10), DATE_OF_DAY, 103) => 15/09/2016
CONVERT(NVARCHAR(10), DATE_OF_DAY, 3) => 15/09/16
構文:
CONVERT('TheTypeYouWant', 'TheDateToConvert', 'TheCodeForFormating' * )
あなたの場合、次のように nvarchar(6) でサイズを変換して制限しました:
CONVERT(NVARCHAR(6), DATE_OF_DAY, 112) => 201609
詳細については、http ://www.w3schools.com/sql/func_convert.asp を参照してください。
1 か月目なので、期待値を取得しています。この回答に従って、月をゼロパッドする必要があります (1 -> 01): How do I convert an int to a zero padded string in T-SQL?