none
 求助:如何根据当前日期选择学期?具体见帖子 RRS feed

  • 问题

  • 数据表:

    学年       学期            开学日期                                       学期结束日期                    开始放假日期                                   假期结束日期
    2016        1        2016-08-29 00:00:00.000          2017-01-08 00:00:00.000         2017-01-09 00:00:00.000      2017-02-12 00:00:00.000

    2016        2       2017-02-13 00:00:00.000          2017-07-02 00:00:00.000         2017-07-03 00:00:00.000      2017-08-27 00:00:00.000

    ......数据很多条

    问题需求是:
    根据当前日期判断所在学期,想实现的逻辑是:本学期开始放假后,一直到下学期结束日期都算下学期的,比如从2017年1月9日开始,一直到2017年7月2日结束的之间的日期,都检索出来是2016年2学期。

    2017年2月4日 1:30

全部回复

  • 你的数据是有顺序的吗?这个可以写出来,不过我建议你把上一学期的放假时间放到下一学期的记录中,加个字段。


    想不想时已是想,不如不想都不想。

    2017年2月4日 5:22
    版主
  • 本学期开始放假后,一直到下学期结束日期都算下学期的

    ------------------------------------------------------------- 按照你说的这个,你的表设计就不太合理吧?在业务逻辑上自在一齐的数据不是在同一条记录上,你这是人为制造障碍

    2017年2月4日 5:31
  • -- 按照你目前的设计,学期开始日期就是开学之前的最近一个放假开始日期,用子查询先弄出来,然后判断
    select * from(
    select a.学年, a.学期,
    开始日期 = (select top 1 b.开始放假日期 from tb where b.开始放假日期 < a.开学日期 order by b.开始放假日期),
    结束日期=a.开始放假日期
    from tb a
    ) data
    where getdate() between 开始日期 and 结束日期

    2017年2月4日 5:38