开发者

Visibility schedule

开发者 https://www.devze.com 2022-12-12 19:27 出处:网络
I want to have a simple database table to keep track of scheduled category visibility on a site index. Basically it will tell the index to display a Christmas category between Thanksgiving and Christm

I want to have a simple database table to keep track of scheduled category visibility on a site index. Basically it will tell the index to display a Christmas category between Thanksgiving and Christmas day.

So far I'm thinking of using a table like this,

schedule_id SMALLINT,

start_date TIMESTAMP,

end_date TIMESTAMP,

category_id SMALLINT,

annual BOOL

Simple enough, the database can select any rows where the time falls between start/end.

My issue comes in with my annual flag. Basically I'm thinking that once a day the databa开发者_开发百科se can update the table, and add one year to any row where end_date < now and annual is true, otherwise delete the row if it's expired.

I'm worried that leap years or something could offset the rescheduled date.

Am I on the right track here ?

Is there a better way to do this ?


If you add one year, rather than (say) 365 days you won't need to worry about the leap year issue.

 ADDDATE( date, INTERVAL 1 YEAR )

Adding 1 year to a leap day date gets you 28th February for the following year

2008-02-29 -> 2009-02-28

You might consider breaking your schedules out from your categories and having a join table linking categories to schedules. Then if you want to share a schedule betwen categories its a little easier. And potentially you can use the schedules elsewhere by adding other join tables.

Last suggestion, rather than having an annual field, have a nullable field to indicate a periodicity: weekly, monthly, etc., again gives you a more flexible schedule model.

0

精彩评论

暂无评论...
验证码 换一张
取 消