查询某段时间内过生日的员工名单的SQL语句
来源:互联网 发布:北京华悦网络 编辑:程序博客网 时间:2024/05/14 08:41
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+"'
or
分析一下这个语句的含义:
(dateadd(year,datediff(year,birthday,'"+BeginTime+"'),birthday)和
的作用是把所有的员工的出生的年份改成是查询中输入日期的年份,因为前台查询输入的是两个日期,这两个日期可能年份不同,如前台查询的是2007-12-20到2008-1-20这个时间段的过生日员工名单,所以需要考虑两种年份情况,然后通过between '"+BeginTime+"' and '"+EndTime+"' 进行符合条件的记录的筛选。
- 查询某段时间内过生日的员工名单的SQL语句
- sql查询某段时间内的数据
- SQL语句查询时间内的数据
- MySql查询某段时间内的数据
- 生日查询,查询5天天内过生日的人员的SQL语句
- sql语句时间格式和查找某一段时间内有变化的
- Mysql联表查询、查询近期某段时间内的数据等
- PowerShell 拷贝某段时间内的文件
- log4j保留某段时间内的日志
- SQL语句实现查询一段时间内的数据中要注意的细节问题
- 查询某一段时间内的所有天或月
- 查询某段时间内 每一天的最高记录和最低记录
- 查询mysql表字段信息的sql语句
- oracle 查询某段时间的sql
- 查询指定时间段过生日的人员
- Mysql查询最近时间内信息的sql,DATA_SUM、DATA_ADD
- 匹配查找某段时间内某字段相同的内容
- 自由获取任意某段时间内的工作日
- 终于解决了NHibernate的排序问题
- C#中如何根据身份证号码得到出生日期和性别
- 远程连接sql server 2000服务器的解决方案
- 用CMarkup类解析XML文档 2
- 怎样去调试一个新设计的电路板
- 查询某段时间内过生日的员工名单的SQL语句
- asp.net真的没落了吗?我的大学,我的专业
- 模仿提升抽象进阶
- winform关闭窗口的两个问题
- 匹配IP字串、域名的正则表达式
- 100% Stone Mosaic Tiles
- Java正则表达式教程
- Delphi 文件
- 发一下昨晚交流会的电子相册