SQL应用之时间函数篇
关于SQL基础,我不想多谈,因为这本就不是给初学者学习的,只是写下自己的心得体会
1.时间基础数据
函数:DAY(日期),MONTH(日期),YEAR(日期) 返回对应参数的值
SELECT DAY('2016-02-01'):1
SELECT MONTH('2016-02-01'):2
SELECT YEAR('2016-02-01'):2016
2.时间格式化函数
函数:CONVERT(类型,时间,参数)
关于时间格式化,对于自己参数我一般只用 120,基本上能吃遍天
SELECT CONVERT(varchar(50), GETDATE(), 120): 2006-05-16 10:57:49
SELECT CONVERT(varchar(10), GETDATE(), 120): 2006-05-16
根据长度可以调节获取的量
当然如果你想要其它的格式化,恐怕只能去其它博客寻找了
3.时间差函数
函数:DATEDIFF(时间单位,时间1,时间2),根据时间单位计算时间2比时间1大多少个单位
时间单位:day 日,year 年,month 月,s 秒 等
SELECT DATEDIFF(DAY,'2016-1-1','2016-1-2'): 1
4.获取新时间函数
函数:DATEADD(时间单位,值,时间),根据已知时间加上值与时间单位的乘积
SELECT DATEADD(day,1,'2016-1-1'): 2016-1-1
函数:GETDATE() 获取服务器时间
5.变量
DECLARE
@rq DATETIME
SELECT @rq=GETDATE()
all:下面我谈一下对于这几个函数的联合应用
1.根据已知时间计算当年天数
DECLARE
@rq DATETIME,@syear DATETIME,@eyear DATETIME
SELECT @rq=GETDATE()
SELECT @syear=CONVERT(VARCHAR(4),@rq,120)+'-01-01' --计算年初
SELECT @eyear=CONVERT(VARCHAR(4),@rq,120)+'-12-31 23:59:59' --计算年末
SELECT DATEDIFF(DAY,@syear,@eyear) --计算天数
2.根据已知时间计算当月与上月的参数
DECLARE
@rq DATETIME,
@smonth DATETIME,@emonth DATETIME,
@smonthl DATETIME,@emonthl DATETIME
SELECT @rq=GETDATE()
SELECT @smonth=CONVERT(VARCHAR(7),@rq,120)+'-01' --计算月初
SELECT @smonthl=DATEADD(MONTH,-1,@smonth) --计算上月初
SELECT @emonth=DATEadd(s,-1,DATEADD(MONTH,1,@smonth)) --计算月末
SELECT @emonthl=DATEadd(s,-1,@smonth) --计算上月末
3.根据已知时间计算医保年初年末(医保年初7-1,年末6-30),其它不是整年的可以参考
DECLARE
@rq DATETIME,@syear DATETIME,@eyear DATETIME
SELECT @rq=GETDATE()
SELECT @syear=CAST(YEAR(@rq)-1+MONTH(@rq)/7 as varchar(10))+''+'-07-01' --计算年初,7月之后就不会减一
SELECT @eyear=DATEADD(S,-1,DATEADD(YEAR,1,@syear)) --计算年末
几种比较常见的应用,其实计算方法很多,根据不同的函数可以组装不同的算法

浙公网安备 33010602011771号