SQL 日期函数的使用方法

1.getdate()

getdate()是常用的获取日期的函数。在使用中要特别注意:由于系统或者电脑日期格式设置等问题,getdate()函数返回日期格式并不相同。为了统一日期格式可以使用convert函数对返回值进行格式转换。常用格式百度有很多,自己经常使用格式如下:
[sql]  view plain  copy
  1. select convert(varchar(100),getdate(),24)--15:51:28  
  2. select convert(varchar(100),getdate(),23)--2017-02-25  
  3. select convert(varchar(100),getdate(),120)--2017-02-25 15:50:32  

2.datepart()和datename()区别和使方法

1.区别

datepart()和datename()区别是:前者返回指定日期部分的整数,而后者返回指定日期格式的字符串

2.使用方法
两者使用方法基本一样。语法分别是 DATENAME ( datepart , date ) 和 DATEPART (datepart , date ) 。datepart参数如下:

datepart

缩写

yy, yyyy

季度

qq, q

mm, m

年中的日

dy, y

dd, d

wk, ww

星期

dw, w

小时

hh

分钟

mi, n

ss, s

毫秒

ms

微妙

mcs

纳秒

ns


注意:对于更小的时间单位存在溢出值:

milliseconds    24 天

seconds    68 年

minutes    4083 年

others    没有溢出限制
下面是使用datepart获取的日期部分,使用datename获取的值相同,只不过类型是字符串。(getdate()='2017-02-25')
select datepart(qq,getdate())--返回值是1 第一季度
select datepart(wk,'2017-02-26')-- 本年度第9周
select datepart(w,'2017-02-26')-- 1返回值1 这里明显是周日 但是返回值是1.因为系统默认周日是每周的第一天
如果想获取日期的年月日,除了这两个函数也可以直接使用year(),moutn(),day函数。
[sql]  view plain  copy
  1. select day(getdate());--返回当前日期的天  
  2. select month(getdate())--返回当前日期的月份  
  3. select year(getdate());--返回当前日期的年份  

3.日期加减DATEADD()和DATEDIFF()函数

[sql]  view plain  copy
  1. select DATEADD(wk,2,getdate());--为当前日期加上2周  
  2. select DATEDIFF(d,'2017-02-25','2017-02-18');-- -7返回两个指定的时间之间(包括第二个日期但不包括第一个日期)的午夜数。  
  3.   
  4. select DATEDIFF(wk,'2017-02-06','2017-02-11');--0--返回两个日期(包括第二个日期但不包括第一个日期)之间星期日的数目。  
  5. select DATEDIFF(wk,'2017-02-10','2017-02-12');--1  
  6.   
  7. select DATEDIFF(m,'2017-02-10','2017-02-17')--0--返回两个日期之间(包括第二个日期但不包括第一个日期)出现的月的第一天的数目。  
  8. select DATEDIFF(m,'2017-02-10','2017-02-26')--0  

4.综合 

1.获取一年的第一天和最后一天

[sql]  view plain  copy
  1. select datename(yy,getdate())+'-01-01'--2017-01-01  使用datepart返回整数,不做类型转换会报错  
  2. select datename(yy,getdate())+'-12-31'--2017-12-31 使用datepart返回整数,不做类型转换会报错  
2.获取本季度的第一天和最后一天
获取季度第一天
[sql]  view plain  copy
  1. select CONVERT(char(8),  
  2.         DATEADD(Month,  
  3.             DATEPART(Quarter,getdate())*3-Month(getdate())-2,  
  4.             getdate()),  
  5.         120)+'01'--2017-01-01 系统里年月日格式统一为yyyy-mm-dd  
  6. select convert(varchar(5),getdate(),23)+ (case  when (datepart(q,getdate())*3-2)<10 then '0'+cast((datepart(q,getdate())*3-2)as char(1)) else cast((datepart(q,getdate())*3-2)as char(2)) end )+'-01'--返回值2017-01-01主要想得到mm-dd的日期格式 感觉有点繁琐的  

获取季度最后一天
[sql]  view plain  copy
  1. SELECT CONVERT(datetime,  
  2.     CONVERT(char(8),  
  3.         DATEADD(Month,  
  4.             DATEPART(Quarter,getdate())*3-Month(getdate()),  
  5.             getdate()),  
  6.         120)  
  7.     +CASE WHEN DATEPART(Quarter,getdate()) in(1,4)  
  8.         THEN'31'ELSE'30'END)  
上边函数复制下面博客的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值