MySQL 时间函数小总结

来源:互联网 发布:win7 查看 端口占用 编辑:程序博客网 时间:2024/06/07 02:17

一直做简单的功能测试,而且是黑盒测试,代码还有技术是我比较薄弱的地方,也是急需要学习和提高的地方。最近Jason(我滴领导)教了我部分的sql server 的一些查询语句,发现自己对数据库还是比较感兴趣的,紧接着就是对我们公司现在所使用的ERP中的自定义统计做一个查询,由于ERP用的是MySQL,MySQL和SQL server函数的用法有很多不一样的地方,这时候就需要知道简单的MySQL语句还有函数。而我所要做的就是补充一个函数,日期函数,查询当月(从当月第一天起到下月第一天初)和上月的(上月第一天起到当月第一天出)这些时间段。通过查资料还有请教高人(ERP那边的开发),渐渐明白了怎么写,现在已经把自定义查询统计那些需要的日期函数补充完整。为了方便自己以后的学习和查询,把自己知道和已经实践的mysql时间函数总结下来。

一:MySQL 获得当前日期的时间函数;

a: 函数now(),即日期+时间
select now();
查询结果:
——————–
now()
2015-03-20 12:54:13

b:函数curdate(),即当前日期
select curdate();
查询结果:
———————
curdate()
2015-03-20
等同于 current_date() 和 current_date.

c:函数curtime(),即当前时间
select curtime();
查询结果:
———————
curtime()
13:08:27
等同于current_time() 和 current_time.

d:函数utc_date(), utc_time(), utc_timestamp(),即当前UTC时间(我国位于东八时区,所以本地时间 = UTC 时间 + 8 小时。UTC 时间在业务涉及多个国家和地区的时候,非常有用。)

二:MySQL日期计算函数;

a:函数date_add(),即为日期增加一个时间段

set @date = now();
select date_add(@date, interval 1 day); (注释:在当前日期的基础上加一天)
查询结果:
———————–
date_add(@date,interval 1 day)
2015-03-21 13:29:14
同理:
select date_add(@date, interval 1 hour); (增加一小时)
select date_add(@date, interval 1 minute);(增加一分钟)
select date_add(@date, interval 1 second);(增加一秒)
select date_add(@date, interval 1 microsecond);
select date_add(@date, interval 1 week);
select date_add(@date, interval 1 month);
select date_add(@date, interval 1 quarter);(增加一季度)
select date_add(@date, interval 1 year);
还有下面这个:
select date_add(@date, interval -1 day); (增加一个负数,就是减少一天的意思)查询结果为:2015-03-19 13:26:58
针对sql语句中出现的这个@,我一开始很不理解,查了很多资料都没有找到答案,然后尝试去掉@,然后就查询报错啦,sql也真真是个奇妙的东西,(插一嘴,写到这里真的是写小半天了,女汉子我还是不适合跟代码打交道啊,顺便鄙视一下自己,此刻很是不爽啊),然后问了同事Charlie,搞开发的,告诉@是在声明变量,必须要加的。严重鄙视自己!变量都不懂?! 还有语句中出现的 interval 是用于表示时间尺度的一个数据类型。

以上都是增加一个年月日之类的时间,要是想增加指定的时间呢?比如增加2小时30分钟30秒
select date_add(@date, interval ‘02:30:30’ hour_second);
(此时时间为2015-03-20 14:17) 查询结果:
—————————- —————
date_add(@date, interval ‘02:30:30’ hour_second)
2015-03-20 16:47:31

b:函数date_sub(),即减去一个时间段。用法和date_add()一样。

三:MySQL 时间选取函数

a:函数last_day(),即返回月份中的最后一天
select LAST_DAY(‘2010-10-20’)
查询结果:
————————
LAST_DAY(‘2010-10-20’)
2010-10-31

b:函数Extract() ,即选取时间的各个部分
set @date = ‘2015-05-20 18:18:18’;
select time(@date);
select year(@date);
select month(@date);
查询结果:
———————————————
time(@date) year(@date) month(@date)
18:18:18 2015 5

暂时先写这么多,以上全是自己一个一个敲的啊,突然想哭。。虽然这些函数都很简单,在使用的时候MySQL也会有提示,但是自己写一遍,总是有好处的。等遇到其他的时间查询函数,再继续补充。

0 0