/* 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()) /* (無列名) (無列名) (無列名) 17 7 2012 17 7 2012 */ SELECT DATENAME (DD,GETDATE()) --返回類型為字符型 /* (無列名) 17 */ --用 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 1 0 */ /* 函數 語法 返回值 返回數據類型 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 才是確定的。 */