如果是每天,那就太简单了,每年才触发365次,这类功能用
Timer
或者
Quartz都可以轻松实现。
Timer
或者
Quartz都可以轻松实现。
解决方案 »
- iReport 3.7.5 那个lib文件夹在哪啊??
- 咱想换个工作,做java开发和设计的,有需求的公司请联系我!
- 发布时遇到这个提示Document root element "beans", must match DOCTYPE root "null".
- 帮我解释一下这段代码?
- 如何求别人网站页面运行后的源代码?
- 带数据库连接的程序(exe)到别的电脑上不能用,怎么解决?
- web services 调用的问题!!
- 奇怪的问题!tomcat经常死,要让jsp文件重新编译才行。在线等!!!
- 谁有中文WEBWORK或ACTION IN hibernate (100)
- [求助]如何修改AUTOEXEC.BAT文件内容? 在线求解,知道的帮帮忙……
- 请教个有关服务器问题
- 自己来看
分析如下:
1、你设计的不是闹钟,所以预订时间是没什么作用的,只是一个显示属性而已。
2、按天实际上就是按星期或者按月,只是发生的日期点是“周1、周2、周日”
3、实际有效的设定是按周、按月、按年。
4、日历上的每天都要按上面的周期得到属性值,比如今天是“周日”、“28日”、“12月28日”设计如下:
1、t_memo 备忘录主表:
id int 主键
userid int 表示属于哪个用户
begindate date 起始日期(设定开始日期)
enddate date 结束日期(如果为空表示一直有效,不过为了编程方便,最好是放入一个非常大的日期,比如2099年12月31日)
memomessage varchar 备忘录内容
alarmtime time 闹钟时间
type int (1表示按周、2表示按月、3表示按年)
2、t_schedule 定时表
id int 主键
memoid int 外键关联备忘录主表的主键
validdate varchar 有效日期(按周就存入1/2/3/.../7,按月就1/2/....31/,按年就存入0101/0102/....1231)编程(以月历方式):
从当月1号开始,计算每天的周值、月值、年值(要跟定时表的validdate匹配)
到数据库中查找满足条件的memomessage,SQL可能会是:
select m.* from t_memo m,t_schedule s
where m.id=s.memoid and begindate<=:today and enddate>=:today
and ((m.type=1 and s.validdate=:weekvalue) or (m.type=2 and s.validdate=:monthvalue) or (m.type=3 and s.validdate=:yearvalue))