58

値を選択したい=201301

select getdate(), cast(datepart(year, getdate()) as varchar(4))+cast(datepart(MONTH, getdate()) as varchar(2))

戻ります20131

これを行う通常の方法は何ですか?

4

7 に答える 7

104
SELECT CONVERT(nvarchar(6), GETDATE(), 112)
于 2013-01-08T15:01:44.410 に答える
65
SELECT LEFT(CONVERT(varchar, GetDate(),112),6)
于 2013-01-08T15:03:20.137 に答える
3

実際には、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)ます。

于 2015-03-18T16:56:42.727 に答える
1

日付をさまざまな形式に変換できます。たとえば、次のようになります。

CONVERT(NVARCHAR(10), DATE_OF_DAY, 103) => 15/09/2016
CONVERT(NVARCHAR(10), DATE_OF_DAY, 3) => 15/09/16

構文:

CONVERT('TheTypeYouWant', 'TheDateToConvert', 'TheCodeForFormating' * )
  • コードは整数です。ここで 3 は、世紀のない 3 番目の書式です。世紀が必要な場合は、コードを 103 に変更してください。

あなたの場合、次のように nvarchar(6) でサイズを変換して制限しました:

CONVERT(NVARCHAR(6), DATE_OF_DAY, 112) => 201609

詳細については、http ://www.w3schools.com/sql/func_convert.asp を参照してください。

于 2017-01-11T15:25:58.797 に答える
-1

1 か月目なので、期待値を取得しています。この回答に従って、月をゼロパッドする必要があります (1 -> 01): How do I convert an int to a zero padded string in T-SQL?

于 2013-01-08T15:01:32.657 に答える