SQLserver 中的日期函数--DATEDIFF()、GETDATE() 、DATEADD() 、DATEPART()
来源:互联网 发布:dive into python 2 编辑:程序博客网 时间:2024/06/05 10:04
SQL Server中的日期函数
DATEDIFF() 函数、GETDATE() 函数、DATEADD() 函数、DATEPART() 函数
其中参数简写的值 (参数英文写法和简写均可)(概括不全仅列举部分)
接下来用一道应用题分析各个函数的用法
已知有表Record记录某网吧上网开始时间和结束时间
1、DATEDIFF() 函数返回两个日期之间的时间
格式:
例句:
SELECT DATEDIFF(day,'2017-04-20','2017-04-25') AS DiffDate
得到结果 : 得到的结果为enddate-startdate 的值(25-20=5)
2、 GETDATE() 函数用于返回当前的时间和日期
SELECT DATEDIFF(day,'2017-04-20',GETDATE()) AS DiffDate
得到的结果同上,此时系统当前日期为2017-04-25
以下为 DATEDIFF( )函数 和 GETDATE( )函数相结合的情况:
--a1.查询卡号为0023_ABC 这个月的上机次数select count(CardID) as 上机次数 from Record where CardID = '0023_ABC' and DATEDIFF(mm,BeginTime,getdate()) = 0--a2.查询卡号为0023_ABC 上个月的上机次数select count(CardID) as 上机次数 from Record where CardID = '0023_ABC' and DATEDIFF(mm,BeginTime,getdate()) = 1--b1.上个月为止所有上机信息记录select * from Record where DATEDIFF(m,BeginTime,GETDATE())<=1--b2.这个月为止所有上机信息记录select * from Record where DATEDIFF(m,BeginTime,GETDATE())<=0--c1.两天内上机信息记录select * from Record where DATEDIFF(dd,BeginTime,GETDATE())<=2--c2.查询24小时之内上机的人员卡号和机器ID列表select CardID,ComputerID from Record where datediff(hh,BeginTime,getdate())<=24
这个月顾名思义即月份数相减等于0
上个月顾名思义即月份数相减等于1 以此类推进行分析,不再举例
a1.图 : a2.图 :
b1.图 :基于2017-04-25的日期 <= 1 就是3月到4月中所用的信息记录。
b2.图 :<= 0 就是4月中所用的信息记录。
c1.图 :
c2.图 :
3、 DATEADD( ) 函数在日期中添加或减去指定的时间间隔
格式:
number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数
例如可以使用 DateAdd( )从当天算起 30 天以后的日期或从现在算起 45 分钟以后的时间
--d1.我们希望向 BeginTime 添加 2 天 并重命名该列为 NewBeginTimeSELECT id,DATEADD(day,2,BeginTime) AS NewBeginTime FROM Record
可以看出在原有BeginTime列上“日”中各自增加了两天。
DateAdd 函数不会返回无效日期。
---如下示例将在id为6的 4月25日加上6天。即为 4月31日,然而4月只有30天
--d2.将在id为6的 4月25日 基础上加上6天SELECT id,DATEADD(day,6,BeginTime) AS NewBeginTime FROM Record where id = 6
d2.图: 因为4月没有31天,故直接到5月1日。
若是希望返回过去的时间,则讲number值设为负数。
--d3.如下示例将在id为6的 4月25日减去6天SELECT id,DATEADD(day,-6,BeginTime) AS NewBeginTime FROM Record where id = 6
4、 DATEPART( ) 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等
格式:
--e1.将 EndTime 的分钟数单独抽取出来SELECT id,DATEPART(mi,EndTime) AS NewEndTime from Record
e1.图:
因为 id=1 的 EndTime 值为2017-03-22 12:30:00,其它都为整点。故只有第一列返回值是30
--e2.分离出 EndTime 的 年、月、日、时、分、秒SELECT DATEPART(yyyy,EndTime) AS EndYear,DATEPART(mm,EndTime) AS EndMonth,DATEPART(dd,EndTime) AS EndDay,DATEPART(hh,EndTime) AS EndHour,DATEPART(mi,EndTime) AS EndMinute,DATEPART(ss,EndTime) AS EndSecondFROM Record
- SQLserver 中的日期函数--DATEDIFF()、GETDATE() 、DATEADD() 、DATEPART()
- SqlServer: datepart ,dateadd,datediff,dateName函数
- SQL 日期时间函数(DATENAME ,DatePart ,DateAdd,DateDiff)
- SQL Server 日期函数 集合DATEADD,DATEDIFF,DATENAME,DATEPART
- SQL Server 日期函数 集合DATEADD,DATEDIFF,DATENAME,DATEPART(转)
- Sqlserver日期函数dateadd和datediff
- SQL 标量函数----->日期函数 day() 、month()、year()、DATEADD()、ATEDIFF()、DATENAME()、DATEPART() GETDATE()
- SQL 标量函数----->日期函数 day() 、month()、year()、DATEADD()、ATEDIFF()、DATENAME()、DATEPART() GETDATE()
- js版DateDiff, DateAdd, DatePart等日期数据扩展函数,非常实用
- SQL中的DateAdd 、DateDiff 函数实现日期加减
- SQL中的DateAdd 、DateDiff 函数实现日期加减
- Sqlserver日期函数datepart
- Oracle日期函数dayadd/datediff/datepart
- 模拟SQLSERVER的两个函数:dateadd(),datediff()
- EF日期筛选异常:SqlServer.DATEDIFF”函数的 DATEPART 参数必须是文字字符串。
- DateAdd,DateDiff日期函数的用法
- dateAdd、dateDiff、DatePart参数比较参考
- SqlServer中datediff、datename、datepart。。。
- 为什么在元素设置float之后就可以改变宽和高了呢?
- 深入学习页面优化之页面渲染原理
- 我的博客
- 字符移位 小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。 你能帮帮小Q吗? 输入描述: 输入数据有多组
- 数据结构系列(三)链表
- SQLserver 中的日期函数--DATEDIFF()、GETDATE() 、DATEADD() 、DATEPART()
- 数字和方法数
- 适配器模式
- 浅谈JavaScript模拟$(HTML字符串)实现创建DOM对象
- "Restarting data prefetching from start" repeated many times one by one. why?
- swustoj前缀字符串(0185)
- intellij idea svn使用一 导入、更新、提交、解决冲突
- 让输入焦点移动到下一个编辑框
- 2015百度