2016-10-06 7 views

答えて

0

最も簡単な方法は、あなたの主要な0秒を連結した後、右側の2つの値を取っている:

select right(concat('00', DATEPART(week, getdate())), 2) as WeekNum 

をあなたは、このためのUDFを必要としません。 ..

0

DECLARE @Dt datetime 
SELECT @Dt='01-21-2008' 
SELECT dbo.udfLeftSQLPadding(CAST(DATEPART(wk, @Dt) AS NVARCHAR),2,'0') 

機能がここ

SELECT RIGHT(Replicate('0', 2) + CAST(DATEPART(wk, @Dt) AS NVARCHAR), 2) 

以下のようになど右()、のような他の機能と複製()を使用していますが、出力

で次のように実装する方法 SQL left padding functionをご確認ください

enter image description here

+0

は何をしたいということです? –

+0

<コメントが削除されました> –

0

basi DATEPARTRIGHTSTUFFとCの方法:

DECLARE @d date = '2016-01-01' 

SELECT RIGHT(STUFF(DATEPART(week,@d),1,0,'0'),2) 

出力:

01 

STUFFは、その後、週番号、RIGHTカット右側から2つの文字の前に0を追加します。

0

することもできます連結文字列

SELECT CASE WHEN DATEPART(week,@d) < 10 THEN '0' ELSE '' END + DATEPART(week,@d) 
0

dbo.udfLeftSQLPaddingの代わりに、同じロジックのインラインテーブル値関数を使用すると、より高速で優れたパフォーマンスを得ることができます。それは次のようになります。

CREATE FUNCTION dbo.iTVFLeftSQLPadding 
(
    @String  varchar(100), 
    @Length  smallint, 
    @PaddingChar char(1) = '0' 
) 
RETURNS TABLE WITH SCHEMABINDING AS RETURN 
SELECT newstring = RIGHT(REPLICATE(@PaddingChar, @Length) + @String, @Length); 

あなたがここにこの技術について詳しく知ることができます。http://www.sqlservercentral.com/articles/T-SQL/91724/

関連する問題