关于mysql的时间函数

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

目前就总结到这里了,如果以后用到更多的话会在补充的,呵呵!高手们多拍拍砖啊!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值