sql提前N天提醒生日函数

来源:互联网 发布:淘宝买家秀和谐图片 编辑:程序博客网 时间:2024/06/10 03:19


普通过生日的人,每年提前N天提醒,2月29号生日的人,就当他们平年不过生日

USE [AdventureWorks]GO/****** 对象:  UserDefinedFunction [dbo].[getBirthday]    脚本日期: 03/07/2012 00:28:47 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:kiwiyo-- Create date: 2012/3/7-- Description:输入一个生日,跟你想要查询的任意一个年份的日期,求出你想要--的那年生日的前几天的日期--@birth:生日--@testdate:你想查询的生日的那一年的任意一个正确日期--@days:你想提前几天知道-- =============================================CREATE FUNCTION [dbo].[getBirthday] (-- Add the parameters for the function here@birth datetime ,@testdate datetime ,@days int)RETURNS datetimeASBEGIN-- Declare the return variable hereDECLARE @retDate datetimeset @retDate=dateadd(yy,datediff(yy,@birth,@testdate),@birth)if(day(@retDate) = day(@birth) )set @retDate = dateadd(dd,-@days,@retDate)elseset @retDate = nullreturn @retDateEND


如果说,想要让平年的时候2月29号出生的人也能收到提醒的话,就不要加那个if的判断就可以了。

测试一下这个函数:

select dbo.getBirthday('20000229','20030522',5)


返回值是null,因为2003年是平年,没有2月29号。

换成今年:

select dbo.getBirthday('20000229',getdate(),5)


返回值是2012-02-24 00:00:00.000

在闰年的2012年啊,2月29号出生的人终于过上了生日,如果身边有2月29号出生的人,不要忘记了他们的生日哦~

 

原创粉丝点击