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))







  • 相关阅读:
    clip-path
    box-reflect
    循环内click赋值跳转
    github pages 不能识别下划线开头的文件
    Telerik Reporting
    VS2015项目发布失败且没有错误提示
    kendo grid 过滤器
    kendo 月份选择
    kendo grid过滤
    odata连接现有数据库
  • 原文地址:https://www.cnblogs.com/piaoqingsong/p/898832.html
Copyright © 2011-2022 走看看