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())
/*
(无列名)    (无列名)    (无列名)
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 才是确定的。
*/
posted @ 2012-07-17 15:50  _cc  阅读(3955)  评论(0编辑  收藏  举报