TSQL DatePart Week ww 格式 01 而不是 1
TSQL DatePart Week in ww format 01 instead of 1
从格式为 01 02 03 04 05 而不是 1 2 3 4 5 的日期中获取星期的最佳方法是什么?
请检查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)
这是输出
DATEPART, RIGHT and STUFF的基本方法:
DECLARE @d date = '2016-01-01'
SELECT RIGHT(STUFF(DATEPART(week,@d),1,0,'0'),2)
输出:
01
STUFF
在周数前加0
,然后RIGHT
从右边减去2个字符。
你也可以连接字符串
SELECT CASE WHEN DATEPART(week,@d) < 10 THEN '0' ELSE '' END + DATEPART(week,@d)
最简单的方法是连接前导 0
,然后取最右边的两个值:
select right(concat('00', DATEPART(week, getdate())), 2) as WeekNum
您不需要为此使用 udf...
dbo.udfLeftSQLPadding 的一种更快、性能更好的替代方法是具有相同逻辑的内联 table 值函数。它看起来像这样:
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/
从格式为 01 02 03 04 05 而不是 1 2 3 4 5 的日期中获取星期的最佳方法是什么?
请检查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)
这是输出
DATEPART, RIGHT and STUFF的基本方法:
DECLARE @d date = '2016-01-01'
SELECT RIGHT(STUFF(DATEPART(week,@d),1,0,'0'),2)
输出:
01
STUFF
在周数前加0
,然后RIGHT
从右边减去2个字符。
你也可以连接字符串
SELECT CASE WHEN DATEPART(week,@d) < 10 THEN '0' ELSE '' END + DATEPART(week,@d)
最简单的方法是连接前导 0
,然后取最右边的两个值:
select right(concat('00', DATEPART(week, getdate())), 2) as WeekNum
您不需要为此使用 udf...
dbo.udfLeftSQLPadding 的一种更快、性能更好的替代方法是具有相同逻辑的内联 table 值函数。它看起来像这样:
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/