每天等间隔时间存入数据(如 每隔15分钟),现补全没有存入的数据

xiamei 2007-01-31 10:34:31
如: 2007-1-30 00:15:00 1
2007-1-30 00:45:00 1
2007-1-30 01:00:00 2
2007-1-30 01: 45: 00 1

结果为 2007-1-30 00:30:00 1
2007-1-30 01:15:00 2
2007-1-30 01:30:00 2
...全文
153 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
marco08 2007-01-31
  • 打赏
  • 举报
回复
create table T([date] datetime, id int)
insert T select '2007-1-30 00:15:00', 1
union all select '2007-1-30 00:45:00', 1
union all select '2007-1-30 01:00:00', 2
union all select '2007-1-30 01:45:00', 1

declare @dt table([date] datetime)
declare @begDate datetime, @endDate datetime
select @begDate=min([date]), @endDate=max([date]) from T
while @begDate<=@endDate
begin
insert @dt([date]) select @begDate
set @begDate=dateadd(minute, 15, @begDate)
end
select A.*,
id=(select top 1 id from T where [date]<A.[date] order by [date] desc)
from @dt as A
left join T on A.[date]=T.[date]
where T.[date] is null

--result
date id
------------------------------------------------------ -----------
2007-01-30 00:30:00.000 1
2007-01-30 01:15:00.000 2
2007-01-30 01:30:00.000 2

(3 row(s) affected)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧