日期:2014-05-16  浏览次数:20925 次

怎样找出正在播放的电视节目的所有记录?

我解析了CCTV这个网页下载的电视节目表,已经导入到ACCESS中了。

怎样用SQL找出正在播放的电视节目的所有记录?

表Program有如下字段
ProgramID     自动编号
ProgramName    节目名称
PlayTime   播放时间

我用如下SQL,不够准确。不知有什么更好的SQL呢?
select   *  
from   Program
where   day(PlayTime)   =   day(now())
and   hour(PlayTime)   =   hour(now())
and   minute(PlayTime)   > =   minute(now())
and   month(PlayTime)   =   month(now())  
and   year(PlayTime)   =   year(now())

------解决方案--------------------
我觉得你应该改一下数据库的结构。
因为一个program的播出是在一个时段内的。在program表中只有开始时间没有结束时间,
只通过判断播出时间是不行的。而要在数据库里寻找下一个节目的播出时间然后再对比当前的时间要通过嵌套查询。在access里写起来可能不太好写(用access比较少)。建议你在program里增加一个结束时间的字段。这样判断起来就方便多了。
------解决方案--------------------
--年月日时相同,但分钟不同,大于等于当前时间的分钟,使用如下SQL:

select *
from Program
where format(PlayTime, "yyyy-mm-dd HH ")=format(now(), "yyyy-mm-dd HH ")
and format(PlayTime, "yyyy-mm-dd HH:MM ")> =format(now(), "yyyy-mm-dd HH:MM ")