TSQL DatePart Week以ww格式01而不是1

时间:2016-10-06 05:57:47

标签: sql sql-server tsql week-number datepart

以01 02 03 04 05而不是1 2 3 4 5的格式从日期开始一周的最佳方式是什么?

5 个答案:

答案 0 :(得分:2)

最简单的方法是连接前导0,然后取两个最右边的值:

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

你不需要一个udf ...

答案 1 :(得分:1)

请按以下方式检查SQL left padding function如何实施

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

函数使用Replicate()和其他函数如Right()等,如下所示

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

这是输出

enter image description here

答案 2 :(得分:0)

DATEPARTRIGHTSTUFF的基本方式:

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

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

输出:

01

STUFF在周数前添加0,然后RIGHT从右侧剪切2个字符。

答案 3 :(得分:0)

您还可以连接字符串

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

答案 4 :(得分: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/