zoukankan      html  css  js  c++  java
  • 获取生日提醒数据

    这个看起来很简单,写起来还有点麻烦。

    首先不能只比较月、日,因为8月30日要提醒9月1日的生日
    那么只能从日期比较来处理

    先创建表
    Create table Staff(id int identity(1,1),Staff_Time Datetime)
    go
    insert into Staff(Staff_Time)
    select '20020901' union all
    select '20010917' union all
    select '19820701' union all
    select '19730912' union all
    select '19761206' union all
    select '19680918'
    go

    以下是查3天内过生日的,这里将生日数据转化成要比较日期的当年日期,得到差距3天内的数据
    declare @Date datetime
    set @Date = GetDate()

    Select * From Staff
    Where
    DateDiff(Day,DateAdd(Year,DateDiff(year,Staff_Time,@Date),Staff_Time),@Datebetween 0 and 3

    Drop table Staff

    看起来好象完了,但是依然有问题。那么假如今天是2007年2月28日,那么是不是要提醒生日为2月29日的人呢,显然不需要。

    那么就还需要加条件,要知道2004年2月29日,增加N年变成闰年时没有什么问题,如果非闰年的话就变成了XXXX年2月28日了。那么增加的条件就是年份增加后日期是否一致就可以了
    Select * From Staff
    Where 
    DateDiff(Day,DateAdd(Year,DateDiff(year,Staff_Time,@Date),Staff_Time),@Datebetween 0 and 3
    and datepart(day,Staff_Time)=datepart(day,dateadd(year,datediff(year,Staff_Time,@Date),Staff_Time))







  • 相关阅读:
    freopen
    字符
    map映射
    P3512 [POI2010]PIL-Pilots-洛谷luogu
    快读
    单调队列&单调栈
    简写
    邻接表&链式前向星
    mysql参数详解
    网络管理指南
  • 原文地址:https://www.cnblogs.com/piaoqingsong/p/898832.html
Copyright © 2011-2022 走看看