以01 02 03 04 05而不是1 2 3 4 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)
这是输出
答案 2 :(得分:0)
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/