SQLServer中日期函数大全

来源:互联网 发布:mac skype 下载 编辑:程序博客网 时间:2024/05/01 19:07

一、日期函数

1、day(date_expression)
       返回date_expression中的日期值
2、month(date_expression)
      返回date_expression中的月份值
3、year(date_expression)
      返回date_expression中的年份值
4、DATEADD()

DATEADD (<datepart>, <number>, <date>)
       返回指定日期date 加上指定的额外日期间隔number 产生的新日期。
5、DATEDIFF()
       DATEDIFF (<datepart>, <date1>, <date2>)返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其结果值是一个带有正负号的整数值。

6、DATENAME()

DATENAME (<datepart>, <date>)

以字符串的形式返回日期的指定部分此部分。由datepart 来指定。

7、DATEPART()

DATEPART (<datepart>, <date>)
以整数值的形式返回日期的指定部分。此部分由datepart 来指定。
DATEPART (dd, date) 等同于DAY (date)
DATEPART (mm, date) 等同于MONTH (date)
DATEPART (yy, date) 等同于YEAR (date)

8、GETDATE()

以DATETIME 的缺省格式返回系统当前的日期和时间

select convert(varchar(10),getdate(),120)  -- 只返回当前日期,且为2012-12-12格式(最有用) 
 datediff(day,createdate,GetDate())=0      -- 判断是否当天,createdate为日期字段  

一天、第几月  
  
               1.一个月第一天的  
            Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)  
  
               2.本周的星期一  
            Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)  
  
               3.一年的第一天  
            Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)  
  
               4.季度的第一天  
            Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)  
  
               5.当天的半夜  
            Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)  
  
               6.上个月的最后一天  
            Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))  
  
               7.去年的最后一天  
            Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))  
  
               8.本月的最后一天  
            Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))  
  
               9.本年的最后一天  
            Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))  
  
               10.本月的第一个星期一  
            select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)   
  
            select 本年第多少周=datename(week,getdate())  
                  ,今天是周几=datename(weekday,getdate())  
  
                dateadd 在向指定日期加上一段时间的基础上,返回新的datetime值  
               向日期加上2天 或 增加1个月  
                select dateadd(day,2,'2004-10-15')   返回:2004-10-17 00:00:00.000  
                select dateadd(month,2,'2004-10-15')   返回:2004-12-17 00:00:00.000  
  
              3. datediff 返回跨两个指定日期的日期和时间边界数。  
                 select datediff(day,'2016-09-01','2004-09-18')   返回天数:17  
                 select DateDiff(s,'2016-07-20','2005-7-25 22:56:32')   返回值为 514592 秒  
                 select DateDiff(ms,'2016-07-20','2005-7-25 22:56:32')   返回值为 微秒  
                 select DateDiff(d,'2016-07-20','2005-7-25 22:56:32')    返回值为 5 天  
                 select DatePart(w,'2016-7-25 22:56:32')  返回值为 2 即星期一(周日为1,周六为7)  
                 select DatePart('d','2016-7-25 22:56:32')  返回值为 25即25号  
                 select DatePart('y','2016-7-25 22:56:32')  返回值为 206即这一年中第206天  
                 select DatePart('yyyy','2016-7-25 22:56:32')  返回值为 2005即2005年  
  
              DateDiff (interval,date1,date2) 以interval 指定的方式,  
              返回date2 与date1两个日期之间的差值 date2-date1  
              DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期  
              DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值  
              DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称  
  
  
                                                                                          ╔════════════════════╗  
       =================================================================================  ║  当前时间函数      ║  
                                                                                          ╚════════════════════╝   
               返回当前日期和时间  
               select GETDATE()  
  
                返回代表指定日期的指定日期部分的整数。  
                select datepart(month, '2016-10-15')   返回 月  
                select datepart(day, '2016-10-15')   返回 日  
                select datepart(year, getdate())   返回 年  
                select convert(varchar(8),getdate(),114)     当前时间  
                select datename(weekday, getdate())   返回:星期五  
                select datepart(weekday, getdate())   返回:小写星期2-1  
                select convert(varchar(10),getdate(),120)     当前日期  
                select datepart(S, '2016-10-15')   返回 月  
                返回时间到豪秒  
                Select CONVERT(VARCHAR(30),GETDATE(),9)  

 获取当前日期,年、月、日、周、时、分、秒
select GETDATE() as '当前日期',
DateName(year,GetDate()) as '年',
DateName(month,GetDate()) as '月',
DateName(day,GetDate()) as '日',
DateName(dw,GetDate()) as '星期',
DateName(week,GetDate()) as '周数',
DateName(hour,GetDate()) as '时',
DateName(minute,GetDate()) as '分',
DateName(second,GetDate()) as '秒'
运行结果:

格式化日期

convert(date_type[(lenth)],expression,style)
参数说明
date_type:为要转换的数据类型
expression: DATETIME 类型的数据
style:指定转化形式其取值不同对应的日期时间格式将不同
例如======================================  
SELECT convert(varchar, getdate(), 101) -- mm/dd/yyyy - 10/02/2016
SELECT convert(varchar, getdate(), 102) -- yyyy.mm.dd -- 2016.10.02 
SELECT convert(varchar, getdate(), 103) -- dd/mm/yyyy
SELECT convert(varchar, getdate(), 104) -- dd.mm.yyyy
SELECT convert(varchar, getdate(), 105) -- dd-mm-yyyy
SELECT convert(varchar, getdate(), 106) -- dd mon yyyy
SELECT convert(varchar, getdate(), 107) -- mon dd, yyyy
SELECT convert(varchar, getdate(), 108) -- hh:mm:ss
SELECT convert(varchar, getdate(), 109) -- mon dd yyyy hh:mm:ss:mmmAM (or PM)
-- Oct 2 2016 11:02:44:013AM 
SELECT convert(varchar, getdate(), 110) -- mm-dd-yyyy
SELECT convert(varchar, getdate(), 111) -- yyyy/mm/dd
SELECT convert(varchar, getdate(), 112) -- yyyymmdd
SELECT convert(varchar, getdate(), 113) -- dd mon yyyy hh:mm:ss:mmm
-- 02 Oct 2016 11:02:07:577 
SELECT convert(varchar, getdate(), 114) -- hh:mm:ss:mmm(24h)
SELECT convert(varchar, getdate(), 120) -- yyyy-mm-dd hh:mm:ss(24h)
SELECT convert(varchar, getdate(), 121) -- yyyy-mm-dd hh:mm:ss.mmm
SELECT convert(varchar, getdate(), 126) -- yyyy-mm-ddThh:mm:ss.mmm
-- 2016-10-02T10:52:47.513  

0 0
原创粉丝点击