在上一節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.關於季度查詢的執行個體:
declare @date datetime
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 '當前季度的下個季度末'