SQL Server中常用的日期时间函数

日期时间函数可用在SELECT语句的选择列表或用在查询的WHERE子句中,下面将给出SQL Server中重用的日期时间函数。

SQL Server中常用的日期时间函数_第1张图片

由于排版问题,就没有将这些函数表格都贴上来。下面就这些日期时间函数做具体的使用。

1. GETDATE()获取到当前时间
按datetime值的SQL Server标准内部格式返回当前系统日期和时间。

select GETDATE()

在下方结果栏中显示

2016-05-14 12:00:51.737

2. DAY(),MONTH(),YEAR()函数中使用GETDATE()函数,用来返回当前时间的日、月、年

--DAY     DAY ( date )    返回表示指定 date 的“日”部分的整数。     int    具有确定性
--MONTH   MONTH ( date ) 返回表示指定 date 的“月”部分的整数。            int    具有确定性
--YEAR YEAR ( date )    返回表示指定 date 的“年”部分的整数。            int    具有确定性
--其日期值应在1753年到9999年之间
--这是SQL Server系统所能识别的日期范围,否则会出现错误。 
--函数GETDATE()获取到当前时间
select DAY(GETDATE())    as '日'
      ,MONTH(GETDATE())  as '月'
      ,YEAR(GETDATE())   as '年' 
14  5   2016

3.运用DATEPART函数,返回代表指定日期的指定日期部分的整数

--运用DATEPART函数,返回代表指定日期的指定日期部分的整数
SELECT  DATEPART(DAY , GETDATE())  as '日'
        ,DATEPART(MONTH , GETDATE())  as '月'
        ,DATEPART(YEAR , GETDATE())   as '年' 
14  5   2016

4.用 DATEADD ()函数来获得下一个时间或之前的时间日期
DATEADD DATEADD (datepart , number , date ) 通过将一个时间间隔与指定 date 的指定 datepart 相加,返回一个新的 datetime 值。

--用 dateadd 来获得下一个时间或之前的时间日期
 select   GETDATE()                     as '获取当前时间' 
            --获取当前时间    
        , DATEADD (DD , 1 , getdate())  as '当前时间的下一天'   
            --当前时间的下一天
        , DATEADD (MM , 1 , getdate())  as '当前时间的下一个月'  
            --当前时间的下一个月
        , DATEADD (YY , 1 , getdate())  as '当前时间的下一年'   
            --当前时间的下一年
        , DATEADD (DD , -1 , getdate()) as '当前时间的前一天'   
            --当前时间的前一天
        , DATEADD (MM , -1 , getdate()) as '当前时间的前一个月'  
            --当前时间的前一个月
        , DATEADD (YY , -1 , getdate()) as '当前时间的前一年'   
            --当前时间的前一年
获取当前时间          2016-05-14 12:12:29.137 
当前时间的下一天        2016-05-15 12:12:29.137 
当前时间的下一个月       2016-06-14 12:12:29.137 
当前时间的下一年        2017-05-14 12:12:29.137 
当前时间的前一天        2016-05-13 12:12:29.137 
当前时间的前一个月       2016-04-14 12:12:29.137
当前时间的前一年        2015-05-14 12:12:29.137

5.DATEDIFF()函数。

DATEDIFF ( datepart , startdate , enddate )    返回两个指定日期之间所跨的日期或时间 datepart 边界的数目。
 SELECT DATEDIFF(DD,'2016-5-12',GETDATE())  as '相差天数'  --时间差,返回日期
 SELECT DATEDIFF(MM,'2016-4-12',GETDATE())  as '相差月份'  --时间差,返回月份
 SELECT DATEDIFF(YY,'2000-5-14',GETDATE())  as '相差年份'  --时间差,返回年份

2           1           16

6.DATENAME()函数。

DATENAME    DATENAME ( datepart , date )        返回表示指定日期的指定 datepart 的字符串。        nvarchar    
SELECT DATENAME(year, GETDATE())    --年
    ,DATENAME(month,  GETDATE())    --月
    ,DATENAME(day,  GETDATE())     --日
    ,DATENAME(week,GETDATE())       --星期
    ,DATENAME(dayofyear, GETDATE())  --当前年份第多少天
    ,DATENAME(weekday,  GETDATE());   --星期
2016    05  14  20  135 星期六

同样DATENAME()函数还能够和GETDAY()函数一起用,GETDAY()函数大致个GETDATE()函数一样。

SELECT DATENAME(hour, GETDATE()) as '时'         --当天的第几个小时
    ,DATENAME(minute,GETDATE())   as '分'       --当天小时的第几分
    ,DATENAME(second, GETDATE())   as '秒';     --当天小时分钟的第几秒
时   分   秒
12  24  19

7.T-SQL的日期时间函数。

--select GETDATE()

--截取一个时间的年,月,日
--函数GETDATE()获取到当前时间
--select DAY(GETDATE())    as '日'
--      ,MONTH(GETDATE())  as '月'
--      ,YEAR(GETDATE())   as '年' 
      --其日期值应在1753年到9999年之间
      --这是SQL Server系统所能识别的日期范围,否则会出现错误。 

--运用DATEPART函数,返回代表指定日期的指定日期部分的整数
--SELECT  DATEPART(DAY , GETDATE())  as '日'
--        ,DATEPART(MONTH , GETDATE())  as '月'
--        ,DATEPART(YEAR , GETDATE())   as '年' 


--用 dateadd 来获得下一个时间或之前的时间日期
 --select     GETDATE()                     as '获取当前时间' 
    --      --获取当前时间    
    --  , DATEADD (DD , 1 , getdate())  as '当前时间的下一天'   
    --      --当前时间的下一天
 --       , DATEADD (MM , 1 , getdate())    as '当前时间的下一个月'  
    --      --当前时间的下一个月
 --       , DATEADD (YY , 1 , getdate())    as '当前时间的下一年'   
    --      --当前时间的下一年
 --       , DATEADD (DD , -1 , getdate())   as '当前时间的前一天'   
    --      --当前时间的前一天
 --       , DATEADD (MM , -1 , getdate())   as '当前时间的前一个月'  
    --      --当前时间的前一个月
 --       , DATEADD (YY , -1 , getdate())   as '当前时间的前一年'   
    --      --当前时间的前一年

 --SELECT DATEDIFF(DD,'2016-5-12',GETDATE())  as '相差天数'  --时间差,返回日期
 --SELECT DATEDIFF(MM,'2016-4-12',GETDATE())  as '相差月份'  --时间差,返回月份
 --SELECT DATEDIFF(YY,'2000-5-14',GETDATE())  as '相差年份'  --时间差,返回年份

--SELECT DATENAME(year, GETDATE())   --年
--    ,DATENAME(month,  GETDATE())    --月
--    ,DATENAME(day,  GETDATE())     --日
--    ,DATENAME(week,GETDATE())       --星期
--    ,DATENAME(dayofyear, GETDATE())  --当前年份第多少天
--    ,DATENAME(weekday,  GETDATE());   --星期

--SELECT DATENAME(hour, GETDATE()) as '时'           --当天的第几个小时
--    ,DATENAME(minute,GETDATE())   as '分'       --当天小时的第几分
--    ,DATENAME(second, GETDATE())   as '秒';     --当天小时分钟的第几秒


--函数        语法                                返回值                                            返回数据类型    
--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 样式参数且样式不等于 01009109 时,ISDATE 才是确定的。

注意:上面代码都注释了,用的时候撤销注释就行。

你可能感兴趣的:(SQL-Server)