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