68
DECLARE @day CHAR(2)

SET @day = DATEPART(DAY, GETDATE())

PRINT @day

今日が 12 月 9 日の場合、上記は "9" を出力します。

「09」を印刷したい。どうすればこれを行うことができますか?

4

13 に答える 13

106

00 で埋めて、右の 2 を取ります。

DECLARE @day CHAR(2)

SET @day = RIGHT('00' + CONVERT(NVARCHAR(2), DATEPART(DAY, GETDATE())), 2)

print @day
于 2012-12-10T15:41:56.353 に答える
40

SQL Server 2012 以降の場合、先行ゼロ付き:

 SELECT FORMAT(GETDATE(),'MM') 

それなし:

SELECT    MONTH(GETDATE())
于 2016-06-09T21:01:36.440 に答える
25

SQL Server の日付スタイルを使用して、日付値を事前にフォーマットします。

SELECT
    CONVERT(varchar(2), GETDATE(), 101) AS monthLeadingZero  -- Date Style 101 = mm/dd/yyyy
    ,CONVERT(varchar(2), GETDATE(), 103) AS dayLeadingZero   -- Date Style 103 = dd/mm/yyyy
于 2013-11-08T06:34:35.593 に答える
10

これを試して :

SELECT CONVERT(varchar(2), GETDATE(), 101)
于 2014-01-17T09:38:26.280 に答える
1
Select Replicate('0',2 - DataLength(Convert(VarChar(2),DatePart(DAY, GetDate()))) + Convert(VarChar(2),DatePart(DAY, GetDate())

頬から舌を取り除いた後、彼はよりきれいに言った.

通常、SQL でこの種の作業を開始する必要がある場合は、can I から should I に切り替える必要があります。

于 2012-12-10T15:49:41.390 に答える
1
SELECT RIGHT('0' 
             + CONVERT(VARCHAR(2), Month( column_name )), 2) 
FROM   table 
于 2014-09-11T14:41:15.523 に答える
0

独自のメソッドをロール

これは、何かを左にパディングするための一般的なアプローチです。概念は、REPLICATE を使用して、パディングされた値に過ぎないバージョンを作成することです。次に、データが NULL 許容の場合は isnull/coalesce 呼び出しを使用して、実際の値と連結します。これで、ターゲット サイズの 2 倍の文字列がターゲットの長さと正確に一致するか、またはその中間の文字列になりました。ここで、右端の N 文字を切り取るだけで、左側にパディングされた文字列ができます。

SELECT RIGHT(REPLICATE('0', 2) + CAST(DATEPART(DAY, '2012-12-09') AS varchar(2)), 2) AS leftpadded_day

ネイティブに

CONVERT関数は、書式設定済みの日付を取得するためのさまざまな方法を提供します。形式 103ddは、先頭の 0 が保持されることを意味するため、最初の 2 文字を切り取るだけで済みます。

SELECT CONVERT(char(2), CAST('2012-12-09' AS datetime), 103) AS convert_day
于 2012-12-10T16:00:27.283 に答える
-1

select right('0000' + cast(datepart(year, GETDATE()) as varchar(4)), 4) + '-'+ + right('00' + cast(datepart(month, GETDATE()) as varchar) (2)), 2) + '-'+ + right('00' + cast(datepart(day, getdate()) as varchar(2)), 2) as YearMonthDay

于 2016-04-06T09:41:19.943 に答える