DECLARE @day CHAR(2)
SET @day = DATEPART(DAY, GETDATE())
PRINT @day
今日が 12 月 9 日の場合、上記は "9" を出力します。
「09」を印刷したい。どうすればこれを行うことができますか?
00 で埋めて、右の 2 を取ります。
DECLARE @day CHAR(2)
SET @day = RIGHT('00' + CONVERT(NVARCHAR(2), DATEPART(DAY, GETDATE())), 2)
print @day
SQL Server 2012 以降の場合、先行ゼロ付き:
SELECT FORMAT(GETDATE(),'MM')
それなし:
SELECT MONTH(GETDATE())
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
これを試して :
SELECT CONVERT(varchar(2), GETDATE(), 101)
Select Replicate('0',2 - DataLength(Convert(VarChar(2),DatePart(DAY, GetDate()))) + Convert(VarChar(2),DatePart(DAY, GetDate())
頬から舌を取り除いた後、彼はよりきれいに言った.
通常、SQL でこの種の作業を開始する必要がある場合は、can I から should I に切り替える必要があります。
SELECT RIGHT('0'
+ CONVERT(VARCHAR(2), Month( column_name )), 2)
FROM table
これは、何かを左にパディングするための一般的なアプローチです。概念は、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
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