`
longhuiping
  • 浏览: 19596 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于mysql的时间函数

阅读更多
最近面试碰到了关于数据库函数的问题,他是这样问的,“给你一个日期,获取该日期所在周的信息”,让我说一下思路,当时我问他有没有这样的函数,他非常肯定的说没有,但是后来g了一下发现,这家伙居然骗我,发现很多面试官对于面试者不会的信息很少解释,我邪恶的猜想可能是他们也不会吧,呵呵。言归正传,花了半天整理和练习了一下关于mysql的时间函数,可能不全,但我认为在大多数情况下已经能解决很多问题了。
注:参考文献:http://www.blogjava.net/Alpha/archive/2006/04/07/39844.html
  表 info
  字段 id   name  createDate

1 根据日期获得该日期所在周的所有信息

  select * from dateInfo where year(createDate) = year(now())
                               and week(createDate) = week(now());
  now()函数获取当前时间
  year(date)获取参数时间的年份信息 返回一个1000-9999的数字
  week(date)获取参数所在一年中的第几周 返回一个0-52的数字
  week(date,0)为0时表示星期日为下一周的开始与week(date)一致
  week(date,1)为1是表示星期一为一下周的开始
  通过上面判断可以获取参数所在周的一周的信息

2 根据日期获取该日期所在季度的信息
  select * from dateInfo where year(createDate) = year(now())
                               and quarter(createDate) = quarter(now());
  与上面大同小异 quarter(date)获取季度信息 返回一个1-4的数字

3 获取每周周五的信息
  select * from dateInfo where weekday(createDate) = 4;
  weekday()返回一个0-6的数字,星期一为第一天即0

  再来一个获取工作日的信息
  select * from dateInfo where  weekday(createDate) != 5
                               and weekday(createDate) != 6;

下面的就简单介绍一下用途
dayofmonth(date)获取date所在月的第几天 返回一个1-31的数字
dayofyear(date)获取date所在年的第几天  返回一个1-366的数字
month(date)获取date的月份 返回一个1-12的数字
hour(date)获取date的小时数 返回一个0-23的数字
minute(date)获取date的分钟数 返回一个0-59的数字
second(date)获取date的秒 返回一个0-59的数字

4 添加时间信息  减去时间信息
date_add(date,interval info type)
date时间信息
info要添加的时间信息
type添加的类型,决定最后添加的日期的什么地方

在当前时间添加一小时
select date_add(now(),interval 1 hour );
在当前时间添加5分20秒
select date_add(now(),interval '5:20' mintue_second);
在当前时间添加1小时5分20秒
select date_add(now(),interval '1:5:20' hour_second);
在当前时间添加1天1小时5分20秒
select date_add(now(),interval '1 1:5:20' day_second);
大家可能看出来了在添加超过两个日期项的时候,type只需要指定开始和结束的type就ok了
另外相对应的有一个date_sub(date,interval info type) 减去时间信息用法与上面类似

5 对月份的操作
period_add(ym,n)增加n个月到日期p(格式为YYYYMM或YYMM)
select period_add('201005',8) 返回值201101
period_diff(ym1,ym2)算出ym1与ym2的月份插,两者格式都是YYYYMM或YYMM
select period_diff('1005','1008'); 返回值-3 其实是ym1月份减去ym2月份

目前就总结到这里了,如果以后用到更多的话会在补充的,呵呵!高手们多拍拍砖啊!
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics