能见度时间表
我想要一个简单的数据库表来跟踪站点索引上的计划类别可见性。基本上,它会告诉索引在感恩节和圣诞节之间显示圣诞节类别。
到目前为止,我正在考虑使用这样的表,
schedule_id SMALLINT,
start_date TIMESTAMP,
end_date TIMESTAMP,
category_id SMALLINT,
annual BOOL
足够简单,数据库可以选择时间落在开始/结束之间的任何行。
我的问题来自于我的年度旗帜。基本上我认为数据库每天可以更新一次表,并向 end_date < 的任何行添加一年。 now 和 Annual 为 true,否则删除过期的行。
我担心闰年或其他原因可能会抵消重新安排的日期。
我走在正确的轨道上吗?
有更好的方法吗?
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 database 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 ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您添加一年,而不是(例如)365 天,您就不需要担心闰年问题。
在闰日日期中添加 1 年将得到下一年的 2 月 28 日。
您可以考虑将日程表从类别中分离出来,并使用一个连接表将类别与日程表链接起来。然后,如果您想在类别之间共享时间表,那就更容易了。
您还可以通过添加其他连接表来在其他地方使用这些计划。
最后的建议是,不要使用每年字段,而是使用可为空的字段来指示周期:每周、每月等,这再次为您提供了更灵活的计划模型。
If you add one year, rather than (say) 365 days you won't need to worry about the leap year issue.
Adding 1 year to a leap day date gets you 28th February for the following year
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.