SQL语句计算距离今天生日还差几天

原创 2011年01月26日 09:19:00

   SQL语句计算距离生日还差几天原理很简单,将要比较的2个日期的年份统一成一样的,然后再使用datediff函数计算记录的数据和当前的日期比较得到相距的天数。

 

  将年份统一成一样的时候需要注意瑞年的问题,需要将当前的时间的年份统一成记录的,而不是将记录的年份统一成当前日期的年份。要不当前为平年,当记录为瑞年并且为2月29号时间转换就出错了。具体示例看下面的示例


  要实现年份统一可以使用字符串操作函数substring,或者时间操作函数datepart。

 

  下面为SQL语句计算距离生日还差几天的具体代码,测试数据量大概为2w条左右。addtime为记录时间的【如同生日一样】。

 

--第一种方法,substring函数操作,将记录年份统一为当前的,当当前为平年碰到记录为瑞年的2月29号会出错,除非当前年丰也为瑞年,这个语句有错误,不推荐
declare @d datetime
set @d=getdate()
select addtime,datediff(dd,getdate(),convert(char(4),getdate(),120)+'-'+substring(convert(char(10),addtime,120),6,5))as days,id from information order by id
print datediff(ms,@d,getdate())

 

 


--第一种方法,substring函数操作,更正后,年份要和生日的一直才行。要不碰到瑞年的记录会出错 耗时大概350ms左右
declare @d datetime
set @d=getdate()
select addtime,datediff(dd,convert(char(4),addtime,120)+'-'+substring(convert(char(10),getdate(),120),6,5),addtime)as days
from information
print datediff(ms,@d,getdate())

 

 

--第二种方法,datepart函数操作,耗时大概150ms左右
declare @d datetime
set @d=getdate()
select addtime,datediff(dd
,cast(datepart(yyyy,addtime) as char(4))+'-'+cast(datepart(mm,getdate()) as char(4))+'-'+cast(datepart(dd,getdate()) as char(4))
,addtime)as days
from information
print datediff(ms,@d,getdate())


  综合上面的,得出第二种sql语句计算距离生日还要几天效率比较快~,虽然语句是长了一点。

来源:http://www.w3dev.cn/article/20110125/sql-compute-birthdate-now-days.aspx

判断距离1970年1月1日的天数

功能: 输入年月日,计算距离1970年1月1日的天数 输入: 年月日,输入年份范围【1970,2100】,输入年月日的有效性需要判断 输出: DaysSince...
  • bedrock32
  • bedrock32
  • 2014年07月10日 11:28
  • 1865

oracle中计算两个日期之间的差值

两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒,毫秒): 天: ROUND(TO_NUMBER(END_DATE - START_D...
  • u013058618
  • u013058618
  • 2016年10月29日 19:18
  • 6036

C语言-计算某日是该年的第几天

具体需求:编写一个计算天数的程序,用户通过键盘输入年、月、日,在屏幕中输出此日期事该年的第几天 思路:首先判断输入的年份是否是闰年,然后再计算输入的日期为该年的第几天 具体代码实现 ...
  • longshihua
  • longshihua
  • 2017年02月26日 12:06
  • 2565

距离成为一个优秀程序员 你还差这些

在这个世界上有无数人用通过编程试图改造世界,但真正的天才并没有几个。所以,该如何通过简单的几步进阶为编程大神呢? 在这个世界上,有数百万的人热衷于编程,他们有的天赋高,有的肯吃苦,有人是科班出身...
  • wujin8589
  • wujin8589
  • 2016年04月26日 08:24
  • 178

【Java】Java根据出生日期计算还有几天的生日

实例: SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); String clidate = "197...
  • zsq520520
  • zsq520520
  • 2017年03月31日 13:43
  • 1114

第一周----生日差几天

/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者:申玉迪 * 完成日期:2014 年 3 月 1 日 * 版 本 号...
  • u012369021
  • u012369021
  • 2014年03月02日 14:56
  • 529

15第七周项目二——图形用户界面程序开发之测测你和他(她)的生日差几天

/*  * Copyright (c) 2014, 烟台大学计算机学院  * All rights reserved.  * 文件名称:test.cpp  * 作    者:李晓凯  * 完成日期:2...
  • qq_21385857
  • qq_21385857
  • 2015年04月23日 12:41
  • 561

结构体计算两人生日相差几天

#include using namespace std; struct Date { int year; int month; int day; }; int days(Da...
  • qiuxuewei2012
  • qiuxuewei2012
  • 2013年03月08日 11:19
  • 1545

利用SQL函数实现几天前、两点之间的距离

BEGIN DECLARE n_lost_day int; DECLARE n_lost_hours int; DECLARE n_lost_minute int; set n_lo...
  • u010363836
  • u010363836
  • 2017年05月25日 17:40
  • 241

可以根据当前时间计算出距离某个时间点是几分钟前,还是几小时前,几天前

  • 2015年03月25日 14:09
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL语句计算距离今天生日还差几天
举报原因:
原因补充:

(最多只允许输入30个字)