/* 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 才是确定的。 */