在上一节SQL Server几个常用Date函数(一)中我们介绍了下表中前两个date函数,本节继续学习下面三个函数。
函数 |
描述 |
GETDATE() |
返回当前日期和时间 |
CONVERT() |
用不同的格式显示日期/时间 |
DATEDIFF() |
返回两个日期之间的时间 |
DATEPART() |
返回日期/时间的单独部分 |
DATEADD() |
在日期中添加或减去指定的时间间隔 |
3.DATEDIFF (datepart, startdate, enddate) 函数
- 该函数用来计算两个日期之间的天(年、月…)数,enddate 减去 startdate,如果 startdate 晚于 enddate,则返回负值。其中,startdate表示起始时间;enddate表示结束时间;datepart表示时间间隔的计算单位,如年、月、日等。datepart 参数几种常用的值如下表所示:
- Datepart表:
Depart值 |
含义 |
yy, yyyy |
年 |
qq, q |
季度 |
mm, m |
月 |
dy, y |
一年中第几天 |
dd, d |
日 |
wk, ww |
一年中第几周 |
dw, w |
一周中第几天,从周日开始算 |
hh |
小时 |
mi, n |
分钟 |
ss, s |
秒 |
ms |
毫秒 |
mcs |
微妙 |
ns |
纳秒 |
- 实例:查找最近一周内注册的用户
SELECT * FROM UserInfo
where DATEDIFF (DAY ,regtime,GETDATE ()) BETWEEN 0 AND 7
4.SQL Server DATEPART(datepart,date) 函数
- 该 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。其中date 参数是合法的日期表达式;datepart 参数见上表。
- 实例:查看cathy注册的年、月、日
SELECT DATEPART (YYYY ,regtime )as year,DATEPART (MM ,regtime ) as month,DATEPART (DD,regtime ) as date
FROM UserInfo
WHERE sUserName ='CATHY'
5.SQL Server DATEADD(datepart,number,date) 函数
- 该 函数可以计算添加或减去相应时间间隔的时间。其中date 参数是合法的日期表达式。number 是您希望添加的间隔数,如果您指定一个带小数的值,则将小数截去且不进行舍入,对于未来的时间,此数是正数,对于过去的时间,此数是负数。datePart参数见DateDiff中的列表。
- 实例:
DECLARE @A DATE
SET @A = GETDATE()
SELECT DATEADD(DAY,3,@A)
SELECT DATEADD(DAY,9,@A)
6.关于季度查询的实例:
set @date=getdate()
--季度初,计算给定日期所在季度的第一天
select dateadd(quarter,datediff(quarter,0,@date),0) as '当前季度的第一天'
--季度末,计算给定日期所在季度的最后一天
select dateadd(quarter,1+datediff(quarter,0,@date),-1) as '当前季度的最后一天'
--上个季度初
select dateadd(quarter,datediff(quarter,0,@date)-1,0) as '当前季度的上个季度初'
--上个季度末
select dateadd(quarter,datediff(quarter,0,@date),-1) as '当前季度的上个季度末'
--下个季度初
select dateadd(quarter,1+datediff(quarter,0,@date),0) as '当前季度的下个季度初'
--下个季度末
select dateadd(quarter,2+datediff(quarter,0,@date),-1) as '当前季度的下个季度末'