在SQL数据库中表示重复日期

时间:2016-05-06 06:53:08

标签: sql-server tsql database-design database-schema


在我的计划中,我必须管理一些假期。每个假期可以是确切的日期,也可以是重复的日期。

例如:

-6th January of each years
-first day of each month of each year

您如何在db上保存此信息? 我无法使用Datetime,因为在日期时间我无法代表上述示例中的特定情况。

有什么建议吗?

如果可能有问题,我正在使用 TSQL

抱歉我的英语很差。

2 个答案:

答案 0 :(得分:2)

简单的方法,在不了解您对这些数据的使用情况的情况下,将有三个数字字段first<Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Content.Text}" Value="first"> <Setter Property="Foreground" Value="Green" /> </DataTrigger> </Style.Triggers> day并以这种方式解释它们:如果全部三个被填满,这正是那一天,没有其他日子。如果年份没有填写,那就是日期和月份,每年重复一次。如果只填写了一天,那就是每一天重复一天。

如果你有更复杂的重复方案,你需要一个重复规则的属性,比如“每三个月一次”。

当然,每个查询都需要包含一些逻辑来解释这个方案,但这是不可避免的,除非你决定列出所有假期,比如说未来50年。

答案 1 :(得分:0)

我建议使用3列设计来存储这些条件

  1. 列以指定这是Day还是WeekDay

  2. 指定Day/WeekDay Number的栏目(即每天1至30/31,周日1至7)

  3. 指定Monthly/Yearly出现的列。(表示每月/每年)

  4. 例如: - 每个月的第一天,这样的事情:DAY,1,MONTHLY

    每个月的第二个星期六:WEEKDAY,14*,MONTHLY(*我的周开始是星期日)

    这不是一个完美的解决方案,您可能需要添加更多列才能完全满足您的业务逻辑。