日期:2014-05-18  浏览次数:20627 次

如何用sql-------生成播放清單?
是这个样,现在上面给做一个项目,是关于播放视频文件的.

现在要排程,也就是什么文件,在什么时间内放,
我想做成想SQL2000的备份计划里的日程一样,有几种方式,但只能选一种:

1.当按时间段播放时,从几月几号到几月几号
2.当按天复复时,每隔几天播放.
3.当按周重复时,周几就放
4.按月重复,每月的第几天放


我设计了这样的数据库: (4个日程表按上面4种类型保存数据)

日程表1:(按开始结束日期)
文件名 開始日期 结束日期 開始時間 結束時間  
----------------------------------------------
A.AVI 2012-5-1 2012-5-5 09:30 10:30  



日程表2:(按天重复)
文件名 開始日期 每隔几天播放 開始時間 結束時間 
----------------------------------------------
b.AVI 2012-5-1 3 09:30 10:30  

日程表3:(每周几播发)
文件名 開始日期 開始時間 結束時間 周一 周二 周三 周四 周五 周六 周日
----------------------------------------
c.AVI 2012-5-1 10:30 11:30 1 1 1 1 1 0 0 (1为播放 2为不播放)


日程表4:(每月第几天)
文件名 開始日期 每月第几天 開始時間 結束時間 
----------------------------------------------
d.AVI 2012-5-8 6 09:30 10:30  


请问,如何生成以下的详细日期播放表?

文件名 播放日期 开始时间 结束时间
------------------------------------------------
a.avi 2012-5-1 09:30 10:30
a.avi 2012-5-2 09:30 10:30
a.avi 2012-5-3 09:30 10:30
a.avi 2012-5-4 09:30 10:30
a.avi 2012-5-5 09:30 10:30 (将1-4号生成以上的详细日期)
b.AVI 2012-5-3 09:30 10:30  
b.AVI 2012-5-6 09:30 10:30 (将每隔3天生成详细日期,上限是本月度内.)
...
c.AVI 2012-5-1 10:30 11:30  
c.AVI 2012-5-2 10:30 11:30 
c.AVI 2012-5-3 10:30 11:30 
c.AVI 2012-5-4 10:30 11:30 
c.AVI 2012-5-5 10:30 11:30 (按上面的日程,将周一,周二,周三,周四,周五生成详细日期)
d.AVI 2012-5-8 09:30 10:30  
d.AVI 2012-5-14 09:30 10:30  
d.AVI 2012-5-20 09:30 10:30 (每隔6天生成,上限是本月内)...


请问,如何整?有示例代码没?
高手帮一下,谢了..


------解决方案--------------------
这100分居然没人要,按照你的要求实现不难

SQL code


--建一个作业如下所示,定期执行,哪种方式无所谓,调度设置而已,细节你调整下有问题MS ME
CREATE PROCEDURE sp_playlistcreate
AS
BEGIN
INSERT INTO  TB(name) 
SELECT 'a.avi '+CONVERT(varchar(100), GETDATE(), 120) 
end

------解决方案--------------------
LZ:你对问题的描述不是很清楚,你做的项目是网页,还是软件呀?

我的回答:

从你的四个表中选取当天需要播放的文件,--如果需要转换格式的你要转下。

select 日期,文件名,开始时间,结束时间 from A where 日期字段=getdata() union 
select 日期,文件名,开始时间,结束时间 from B where 日期字段=getdata() union
select 日期,文件名,开始时间,结束时间 from C where 日期字段=getdata() union
select 日期,文件名,开始时间,结束时间 from D where 日期字段=getdata() 

你可以把这个结果存在一个表里today_list,然后进行第二步,就是处理时间问题。

从上一个当天需播放的文件中选出当前时间应该播放的文件并播放它就行了。方法是同理的。
select 文件名 from today_list where 开始时间=getdate() --处理一下时间

理一下思路:第一步是第天做一次(加载程序的时候)
第二步是每分钟一次(这个就比较频繁了,可能占用资源多一点)
第三步是播放文件:先停止当前文件的播放,再切换到需播放文件播放就可以了。

希望LZ成功。

2楼说的也可以的,就是不知道适合你用不,LZ根据自己的需要结合一下。

再次祝愿你成功。