首先讲讲要用到的两个数据库函数,dateadd和datediff函数。dateadd函数:DateAdd(interval, number, date)返回的是一个日期数据,函数的三个形参都是必要。interval表示时间的间隔可以是yy(表示年),mm(表示月),dd(表示日),qq(表示季度),ww(表示周);number表示间隔的数值,正数表示日期数据date的未来,负数表示日期数据大特的从前。date为日期数据,一般就是数据表里面的某个日期字段如birthday生日字段。示例 Select dateadd(dd,3,'2008-10-05') 得到的结果就是2008-10-08.datediff函数:DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) 返回的是一个数值,这个数值表示date1和date2之间相隔时间间隔interval的数值。interval表示时间间隔,可以是yy(表示年),mm(表示月),dd(表示日),qq(表示季度),ww(表示周),hh(表示小时),n(表示分钟),s(表示秒)date1, date2是计算中进行计算的两个日期Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。示例:Select datediff(dd,'2008-10-05','2008-10-08') 结果为3了解以上两个函数的用法,我们就可以利用它们来求得某段时间内过生日的员工名单,如存放员工信息的表为StaffBasic,表中员工生日字段名为 Birthday,BeginTime变量存储从前台得到的查询生日的开始时间,EndTime变量存储从前台得到的查询生日的结束时间,则查询语句 SQL的写法如下:Select * From StaffBasic where(dateadd(year,datediff(year,birthday,'"+BeginTime+"'),birthday) between '"+BeginTime+"' and '"+EndTime+"'ordateadd(year,datediff(year,birthday,'"+BeginTime+"'),birthday) between '"+BeginTime+"' and '"+EndTime+"')分析一下这个语句的含义:(dateadd(year,datediff(year,birthday,'"+BeginTime+"'),birthday)和dateadd(year,datediff(year,birthday,'"+EndTime+"'),birthday)的作用是把所有的员工的出生的年份改成是查询中输入日期的年份,因为前台查询输入的是两个日期,这两个日期可能年份不同,如前台查询的是 2007-12-20到2008-1-20这个时间段的过生日员工名单,所以需要考虑两种年份情况,然后通过between '"+BeginTime+"' and '"+EndTime+"' 进行符合条件的记录的筛选。
详细解决方案
SQL应用dateadd和datediff
热度:97 发布时间:2016-05-05 14:43:10.0
相关解决方案
- ESQL datediff 没法解析为有效的类型或函数
- if DateDiff("d"vEditTime,date())<1 then Response.Write"<img src=images/new.gif border=0>"该怎么处理
- DATEDIFF 性能优化解决方案
- DATEDIFF 性能优化,该如何解决
- 请教DATEADD(hh,DATEDIFF(hh,0,dateadd(hh,7-datepart(hh,getdate()),getdate())),0))也就定位到当天的早上7点,在oracle中如何表达
- SQL时间计算,DATEADD()函数,该怎么解决
- dateadd 跟 dateiff 理解不了 求帮忙
- datediff , dateadd 等批改
- sql server (datediff),该如何解决
- DATEDIFF 计算天数时跨闰年时会出异常
- datediff()函数,该怎么处理
- datediff()解决方法
- datediff(),该怎么处理
- 为什么select CONVERT(char(5),dateadd(year, 3 ,'2012-11-01'),110) 得出的结果是11-01 啊该如何处理
- dateadd(day,1,1)是什么意思?该如何处理
- 小弟我来了.select datediff(d,'蛋糕',getdate())=0
- 晚上回来翻贴子,突然想起 select datediff(d,'粽子','蛋糕')=5,蛋糕就是今天了。解决方案
- dateadd(wk,@weekday,dateadd(day,1-(@@datefirst+datepart(dw,@date)-2)%7-1,@date))是什麼意思啊该如何处理
- 这是计算一个月第一天的SQL 脚本: SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)解决办法
- DATEDIFF(HOUR,GETDATE(),GTime)*1
- setfilter()+datediff()如何用
- MySQL数据库计算时间差函数TIMESTAMPDIF() 和 DATEDIFF()的区别和用法
- MySQL报错:SQL_ERROR_INFO: ‘FUNCTION DATEADD does not exist‘
- MySQL -> DQL:日期函数:now,curdate,str_to_date,date_format,datediff
- SQL中对时间的处理函数(DATE_FORMAT(),DATE_ADD() / DATE_SUB(),DATEDIFF(),NIX_TIMESTAMP(),FROM_UNIXTIME())用法详解
- SQL SERVER DATEADD()函数说明
- DATEDIFF