写在前面

mysql的学习,断断续续,今天就接着学习mysql的日期操作吧。

系列文章

mysql之创建数据库,创建数据表

mysql之select,insert,delete,update

mysql之group by,order by

mysql之count,max,min,sum,avg,celing,floor

Mysql实战

1、获得当前时间格式yyyy-MM-dd HH:mm:ss

select now();

结果

另外一个获取当前时间的函数是:sysdate();

区别:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。

select sysdate(),sleep(3),now();

不过在实际中,sysdate()函数很少用。

2、通过时间戳函数也可以获取当前时间

select current_timestamp(),current_timestamp;

3、获取日期,年月日秒

select date('2015-06-27 08:33:32'),year('2015-06-27 08:33:32'),month('2015-06-27 08:33:32'),day('2015-06-27 08:33:32'),time('2015-06-27 08:33:32'),second('2015-06-27 08:33:32');

4、日期格式化函数

date_format(date,format), time_format(time,format)

 select date_format('2015-08-08 22:23:01', '%Y%m%d%H%i%s');

日期、时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(str,format) 函数的 一个逆转换。

select str_to_date('08/08/2015','%m/%d/%Y');

select str_to_date('08/08/15','%m/%d/%Y');

select str_to_date('08.08.15','%m.%d.%Y');

select str_to_date('08:09:30','%h:%i:%s');

select str_to_date('08.09.2015 08:09:30', '%m.%d.%Y %h:%i:%s'); 

5、(日期、天数)转换函数:to_days(date), from_days(days)

select to_days('2015-06-25'); 

select from_days('');

当然,有对日期,天数的操作,也有对年,月,日,时,分,秒的操作,这些等待你去发现。

select time_to_sec('01:00:05'); --
select sec_to_time(3605); -- '01:00:05'

拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)

select makedate(2001,31); -- '2001-01-31'
select makedate(2001,32); -- '2001-02-01'
select maketime(12,15,30); -- '12:15:30'

(Unix 时间戳、日期)转换函数

select unix_timestamp(); --
select unix_timestamp('2015-08-08 12:30:00'); -- '1439008200'
select from_unixtime('');
select from_unixtime(1218124800); -- '2015-06-27 10:24:59.000000'
select from_unixtime('');-- '2015-08-08 12:30:00.000000'
select from_unixtime(1435371899, '%Y %D %M %h:%i:%s %x'); -- '2015 27th June 10:24:59 2015'

6、日期时间计算函数

set @dt=now();
select date_add(@dt, interval 1 day); -- '2015-06-28 10:30:38' 加一天
select date_add(@dt, interval 1 hour); -- '2015-06-27 11:32:10' 加一小时
select date_add(@dt, interval 1 minute); -- '2015-06-27 10:33:33'
select date_add(@dt, interval 1 second); -- '2015-06-27 10:33:34'
select date_add(@dt, interval 1 microsecond);
select date_add(@dt, interval 1 week);
select date_add(@dt, interval 1 month);
select date_add(@dt, interval 1 quarter);
select date_add(@dt, interval 1 year);
select date_add(@dt, interval -1 day);减一天

adddate(), addtime()函数,可以用 date_add() 来替代。

set @dt = '2015-08-09 12:12:33';
select date_add(@dt,interval '01:15:30' hour_second);

从结果,更容易理解,在小时和秒上加上你设置的时间的小时和秒。

set @dt = '2015-08-09 12:12:33';
select date_add(@dt,interval '2 01:15:30' day_second);

减去一个时间

set @dt = '2015-08-09 12:12:33';
select date_sub(@dt,interval '2 01:15:30' day_second);

日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)

set @dt = '2015-08-09 12:12:33';
set @now=now();
select datediff(@now,@dt); -- -43
set @dt = '2015-08-09 12:12:33';
set @now=now();
select timediff(@now,@dt);

注意:timediff(time1,time2) 函数的两个参数类型必须相同,要么都是yyyy-MM-dd HH:mm:ss要么都是HH:mm:ss.

时间戳(timestamp)转换、增、减函数:

timestamp(date) -- date to timestamp
timestamp(dt,time) -- dt + time
timestampadd(unit,interval,datetime_expr)
timestampdiff(unit,datetime_expr1,datetime_expr2)
select timestamp('2015-08-08'); -- 2015-08-08 00:00:00
select timestamp('2015-08-08 08:00:00', '01:01:01'); -- 2015-08-08 09:01:01
select timestamp('2015-08-08 08:00:00', '10 01:01:01'); -- 2015-08-18 09:01:01
select timestampadd(day, 1, '2015-08-08 08:00:00'); -- 2015-08-09 08:00:00
select date_add('2015-08-08 08:00:00', interval 1 day); -- 2015-08-09 08:00:00
select timestampdiff(year,'2002-05-01','2001-01-01'); -- -1
select timestampdiff(day ,'2002-05-01','2001-01-01'); -- -485
select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00'); -- -12
select datediff('2015-08-08 12:00:00', '2015-08-01 00:00:00'); --

7、时区转换函数

convert_tz(dt,from_tz,to_tz)
select convert_tz('2008-08-08 12:00:00', '+08:00', '+00:00'); -- 2008-08-08 04:00:00

总结

这里简单介绍了,经常用到的时间操作的函数,当然,还有很多没有顾及到,这只能在以后在实际中,慢慢去发现了。

参考文章

http://www.cnblogs.com/ggjucheng/p/3352280.html

mysql之日期函数的更多相关文章

  1. MySQL:日期函数、时间函数总结(MySQL 5.X)

    http://www.cnblogs.com/she27/archive/2009/01/16/1377089.html 原文:http://www.51sdj.com/phpcms/picture/ ...

  2. 【转】MySQL:日期函数、时间函数总结(MySQL 5.X)

    转自:http://www.cnblogs.com/she27/articles/1377089.html 一.MySQL 获得当前日期时间 函数1.1 获得当前日期+时间(date + time)函 ...

  3. MySQL中日期函数的使用

    1. MySQL中日期函数的使用 1.1. 转DATETIME类型为Date类型 将add_time ::56转化为date类型 select * from product where Date(ad ...

  4. MySQL:日期函数、时间函数总结

    MySQL 获得当前日期时间 函数 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | n ...

  5. MySQL:日期函数、时间函数处理(转)

    date_add() 增加MYSQL 获取当前时间加上一个月 ; date_sub()减少 date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day ...

  6. Mysql 时间日期函数运用与总结

    Mysql 中的时间与日期常常会用到,但是每次都得找,这里结合工作日常总结一下. |--获取当前时间[正常时间] 1. MySQL 获得当前时间函数:current_timestamp, curren ...

  7. MySql常用日期函数(转载)

    /*date_add(date,interval expr type)和date_sub(date,interval expr type)执行日期运算. date 是一个 datetime 或date ...

  8. mysql时间日期函数总结(转)

    DAYOFWEEK(date)  返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)mysql> select DAYOFWEEK('1998-02-03');  ...

  9. mysql的日期函数介绍

    仅供参考 DAYOFWEEK(date)  返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)mysql> select DAYOFWEEK('1998-02-03 ...

随机推荐

  1. Android开发环境安装经验

    前段时间在一个安装论坛上,下载了老罗的Android学习视频,看到第三节就卡住了。我这边Eclipse安装SDK总是不成功,报各种错误。断断续续好几天的摸索,终于弄明白了。 首先要安装ADT插件,也就 ...

  2. 设计模式之第1章-工厂方法模式(Java实现)

    设计模式之第1章-工厂方法模式(Java实现) “我先来”,“不,老公,我先!”.远远的就听到几个人,哦不,是工厂方法模式和抽象工厂模式俩小夫妻在争吵,尼妹,又不是吃东西,谁先来不都一样(吃货的世界~ ...

  3. thinkphp3.2.3多图上传并且生成多张缩略图

    html部分 <!DOCTYPE html><html><head><meta http-equiv="Content-Type" con ...

  4. PHP 获取客户端用户 IP 地址

    一般情况下可以使用以下代码获取到用户 IP 地址 echo 'User IP - '.$_SERVER['REMOTE_ADDR']; // 服务器在局域网的话,那么显示的则是内网IP .// 如果服 ...

  5. 使用xcache加速PHP运行

    XCache 是一个开源的 opcode 缓存器/优化器, 这意味着他能够提高您服务器上的 PHP 性能. 他通过把编译 PHP 后的数据缓冲到共享内存从而避免重复的编译过程, 能够直接使用缓冲区已编 ...

  6. 管理nuget程序包中搜索不到任何程序包

    之前一直使用vs2012开发,管理nuget程序包没有出现过什么问题.因为开发需要,需要使用vs2015,安装vs2015后再使用vs2012时,发现管理nuget程序包中搜索不到任何资源,晕死. 想 ...

  7. [NOI2010][bzoj2006] 超级钢琴 [主席树/ST表+堆]

    题面: 传送门 思路: 首先容易想到用堆维护的O(n2logn)暴力 那么肯定就是在这个基础上套数据结构了[愉快] 然而我因为过于蒟蒻......只想得到主席树暴力***过去的方法 大概就是把前缀和算 ...

  8. 自制wifi信号放大器

    自制wifi信号放大器 只要家里安装了一台无线路由器,在家里的任何地方都可以使用带上网功能的电子产品上网,但是由于距离的问题,WiFi信号有强弱之分,离无线路由器稍微远点,信号就有所降低,上网速度受影 ...

  9. GROUP BY子句的查询中显示COUNT()为0的结果

    含有GROUP BY子句的查询中如何显示COUNT()为0的结果 在SQL Server数据库查询中,为了对查询结果进行对比.分析,我们经常会用到GROUP BY子句以及COUNT()函数来对查询结果 ...

  10. Gym 100971B 水&愚

    Description standard input/output Announcement   Statements A permutation of n numbers is a sequence ...