删除Datediff中的时间部分



这是我的查询:

SELECT DISTINCT
'wk ' + TRIM(CONVERT(varchar(max), DATEADD(Week, DATEDIFF(week, 0, CONVERT(VARCHAR(max), period)), -1))) [week]
FROM    
ABC
GROUP BY 
TRIM(CONVERT(varchar(max), DATEADD(Week, DATEDIFF(week, 0, CONVERT(VARCHAR(max), period)), -1)))

我得到这样的结果:wk Aug 7 2022 12:00AM

但我想要这种格式的wk Aug 7, 2022

答案中有一个错误,它总是在一月返回,现在已经修复了错误

您可以使用日期部分函数构建字符串

declare @period datetime = '20220807' -- getdate()
SELECT 'wk ' + 
left(datename(month, @period), 3) + 
' ' + convert(varchar(2), datepart(day, @period)) + 
' ,' + convert(varchar(4), datepart(year, @period))

看起来像这个wk Aug 7 ,2022

要转换您的select子句以使用此,

declare @table1 table (id int, period date)
insert into @table1 (id, period) values (1, '20220807'), (2, '20211130')
SELECT 'wk ' + 
left(datename(month, dateadd( week, DATEDIFF( week, 0, CONVERT(VARCHAR(12), convert(date, period))), -1)), 3) + 
' ' + convert(varchar(2), datepart(day, dateadd( week, DATEDIFF( week, 0, CONVERT(VARCHAR(12), convert(date, period))), -1))) + 
' ,' + convert(varchar(4), datepart(year, dateadd( week, DATEDIFF( week, 0, CONVERT(VARCHAR(12), convert(date, period))), -1)))
from   @table1

看起来像这个

COLUMN1
2022年8月7日工作
2021年11月28日工作

最新更新