1. 程式人生 > >T-SQL 日期常用函式

T-SQL 日期常用函式

/*

Environment: win7 + sql server 2008 r2
Author: CC
Desctiption:
常用日期函式整理:
DAY,MONTH,YEAR , DATEPART
DATEADD,DATENAME ,
DATEDIFF ,isdate 的使用
*/

–擷取一個時間的年,月,日
select DAY(GETDATE())
,MONTH(GETDATE()) –MONTH() 函式的引數為整數時,一律返回整數值1,即SQL Server 認為其是1900 年1 月。
,YEAR(GETDATE()) –其日期值應在1753年到9999年之間,這是SQL Server系統所能識別的日期範圍,否則會出現錯誤。
–運用DATEPART函式
UNION ALL
SELECT DATEPART(DAY , GETDATE())
,DATEPART(MONTH , GETDATE())
,DATEPART(YEAR , GETDATE())
/*
(無列名) (無列名) (無列名)
7 2012
7 2012
*/

SELECT DATENAME (DD,GETDATE()) –返回型別為字元型
/* (無列名)
*/

–用 dateadd 來獲得下一個時間或之前的時間日期

select DATEADD (DD , 1 , getdate()) –當前時間的下一天
, DATEADD (MM , 1 , getdate()) –當前時間的下一個月
, DATEADD (YY , 1 , getdate()) –當前時間的下一年
, DATEADD (DD , -1 , getdate()) –當前時間的前一天
, DATEADD (MM , -1 , getdate()) –當前時間的前一個月
, DATEADD (YY , -1 , getdate()) –當前時間的前一年

–2012-07-18 15:47:05.663 2012-08-17 15:47:05.663 2013-07-17 15:47:05.663 2012-07-16 15:47:05.663 2012-06-17 15:47:05.663 2011-07-17 15:47:05.663

SELECT DATEDIFF(DD,’2012-07-11 15:03:11.623’,GETDATE()) –時間差
–6

SELECT DATENAME(dayofyear,GETDATE()) ,DATEDIFF(dd,’2012-01-01’,getdate())
–199 198

SELECT DATENAME(year, GETDATE())
,DATENAME(month, GETDATE())
,DATENAME(day, GETDATE())
,DATENAME(week,GETDATE())
,DATENAME(dayofyear, GETDATE())
,DATENAME(weekday, GETDATE());
–2012 July 17 29 199 Tuesday

SELECT DATENAME(hour, GETDATE()) –當天的第幾個小時
,DATENAME(minute,GETDATE()) –當天小時的第幾分
,DATENAME(second, GETDATE()); –當天小時分鐘的第幾秒
—15 48 9

SELECT ISDATE(‘2012-07-17’) UNION ALL
SELECT ISDATE(‘2012-07-17 15:12:00’) UNION ALL
SELECT ISDATE(111)
/*
1
*/

/*
函式 語法 返回值 返回資料型別
DAY DAY ( date ) 返回表示指定 date 的“日”部分的整數。 int 具有確定性
MONTH MONTH ( date ) 返回表示指定 date 的“月”部分的整數。 int 具有確定性
YEAR YEAR ( date ) 返回表示指定 date 的“年”部分的整數。 int 具有確定性
DATENAME DATENAME ( datepart , date ) 返回表示指定日期的指定 datepart 的字串。 nvarchar
DATEPART DATEPART ( datepart , date ) 返回表示指定 date 的指定 datepart 的整數。 int
DATEDIFF DATEDIFF ( datepart , startdate , enddate ) 返回兩個指定日期之間所跨的日期或時間 datepart 邊界的數目。 int 具有確定性
DATEADD DATEADD (datepart , number , date ) 通過將一個時間間隔與指定 date 的指定 datepart 相加,返回一個新的 datetime 值。

ISDATE ISDATE ( expression ) 確定 datetime 或 smalldatetime 輸入表示式是否為有效的日期或時間值。
int 只有與 CONVERT 函式一起使用,同時指定了 CONVERT 樣式引數且樣式不等於 0、100、9 或 109 時,ISDATE 才是確定的。
*/