• 获取生日提醒数据


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

    首先不能只比较月、日,因为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))







  • 相关阅读:
    leetcode刷题29
    leetcode刷题28
    leetcode刷题27
    leetcode刷题23
    leetcode刷题22
    leetcode刷题21
    leetcode刷题20
    Unity中通过DoTween实现转盘效果
    U3D工作注意事项,不要再犯!
    Unity中String字符串的优化
  • 原文地址:https://www.cnblogs.com/piaoqingsong/p/898832.html
Copyright © 2020-2023  润新知