我有带有日期列的行。我需要找到最接近每周结束的值。
示例:对于 1 月 3 日至 9 日,从 1 月 4、5、6 的值开始,它将返回 1 月 6 日,对于 1 月 10 日至 16 日,从值 10,11 开始,它将返回 1 月 11 日。
因此,在包含 4、5、6、10、11 Jan 的行中,查询应该返回 Thu 6 和 Tue 11 Jan。
希望这是有道理的。
您需要说明您正在使用哪个 RDBMS 以获得更好的答案。
对于 SQL Server,您可以使用此
select MAX(date)
from #tmp
group by DATEPART(wk, date)
注意:除非您使用 SET DATEFIRST 更改一周的第一天,否则“星期”从星期日到星期六运行。
要运行 Mon-Sun,请改用它
select MAX(date)
from #tmp
group by DATEPART(wk, date-1)
使用的测试台
create table #tmp (date datetime)
insert #tmp select '20110104'
insert #tmp select '20110105'
insert #tmp select '20110106'
insert #tmp select '20110110'
insert #tmp select '20110111'