zoukankan      html  css  js  c++  java
  • MySQL时间函数,用起来比PHP还爽

      前一篇写了PHP的时间函数(还是草稿),这一篇就写Mysql的时间函数吧。最近做的项目,关乎权限,于是自然而然的就与有效期联系在了一起。其中有一个功能是生成特殊表格,可以根据用户的选择,按周、月、季、年来处理数据。这其中要与PHP和MySQL函数打交道。考虑到这些时间函数,是进行业务的基础。于是还是牢牢的背下来比较好。


    1、当前的时间(字符串时间与unix时间戳时间):

      经常有需求要获取服务器当前的时间,在mysql里面很简单:now()

          

         这个now() 时间是当前mysql服务器的时间,并不是我们执行操作(比如用户注册)行为的时间。mysql执行操作行为的时间是:sysdate();

              这两个时间的主要区别:now() 是系统的时间。是一直都存在的。而sysdate() 是我们执行一个操作时候的时间。关于获取当前时间,mysql还有一些其他的函数,不过名字起的乱七八糟,什么current_timestamp()   current_timestamp,localtime()   localtime,localtimestamp()   localtimestamp。名字明明是timestamp,但是结果却是一个字符串,愿意学习的朋友可以多记几个。

        上面的now() 和sysdate()  是一个字符串的时间。我们有时候,也会用到当前的时间戳。

        当前的时间戳:unix_timestamp();

        这个函数如果()里面没有传值,获取的是当前的时间戳。如果传值则是获取所串进去的时间的时间戳。看图:

        

        2、时间的格式化。

        时间的格式化一般分为以下几种需求:

        ①   将字符串的时间变成unix时间戳。例如将  2015-11-14 04:03:16 变成 1447445028

        ②  将unix时间戳变成字符串的时间。 例如将   1447445028 变成 2015-11-14 04:03:16

        ③  将字符串时间戳进行格式化,只取年, 只取月,只取周等等。

        来吧,我们一一击破。

        针对第一种需求,前面已经讲过了,使用unix_timestamp()函数即可。例如 unix_timestamp('2014-05-09');

        针对第二种需求,既然有unix_timestamp函数也肯定有from_unixtime这个函数。顾名思意,是将一个unixtime转化成时间戳。有两种写法,可以各取所需。

        

         针对第三种需求:经常需要获取某个时间的年份、月份、或者在一年中是第几周、是第几个季度等等。那么我们就需要下面这些函数了。

        

          这些单词比较简单,所以记忆起来也不费功夫。

          比如有一个需求,我想看看一周中,周一至周五中,注册会员的情况是怎样的。则上面的情况就不能帮助我们了。我们需要取出会员的注册时间,然后拿到PHP里面换算出,今天是星期几,然后统计人数。

         mysql知道我们可能会有这个需求,于是类似的函数也写好了。

        

         又比如,我想知道每个月月末那一天公司产品的销售状况。通常这个要靠PHP来算出一个月的最后一天是什么,然后到数据库去查。但是mysql又帮我做好了,简直太省力了。

        

         补充一点: 使用extract()函数也能满足上面的需求,具体的用法:select extract();下面的用法看看就好,如果有喜欢的,也可以使用。

          set @dt = '2008-09-10 07:15:30.123456';
     
    select extract(year from @dt); -- 2008
    select extract(quarter from @dt); -- 3
    select extract(month from @dt); -- 9
    select extract(week from @dt); -- 36
    select extract(day from @dt); -- 10
    select extract(hour from @dt); -- 7
    select extract(minute from @dt); -- 15
    select extract(second from @dt); -- 30
    select extract(microsecond from @dt); -- 123456
    select extract(year_month from @dt); -- 200809
    select extract(day_hour from @dt); -- 1007
    select extract(day_minute from @dt); -- 100715
    select extract(day_second from @dt); -- 10071530
    select extract(day_microsecond from @dt); -- 10071530123456
    select extract(hour_minute from @dt); -- 715
    select extract(hour_second from @dt); -- 71530
    select extract(hour_microsecond from @dt); -- 71530123456
    select extract(minute_second from @dt); -- 1530
    select extract(minute_microsecond from @dt); -- 1530123456
    select extract(second_microsecond from @dt); -- 30123456

        3、日期的加减运算。

         实际项目中,经常会查看一些产品的历史性信息。有了mysql的日期加减函数,就不需要先用PHP算好时间,然后传进mysql里。这些mysql都可以处理。

        

       

         还有一些其他的用法,总之只要你想到的,Mysql都已经做好了。感兴趣的,可以参考mysql手册。

    后期如果有遇到比较好用的功能也会继续补充。


    补充:

    mysql的默认 字段是不能是函数的,但是mysql的timestamp类型却可以使用mysql的自带函数。目前仅知道可以使用current_timestamp()外,不知道还可以使用什么。

  • 相关阅读:
    zabbix 监控获取源码包的地址
    为MongoDB加集群验证的关键点
    Mongodb 集群加keyFile认证
    Prometheus完整的部署方案+实战实例
    如何让你的linux的命令行变得很炫
    redis实现加锁的几种方法示例详解
    phpquerylist 抓取数据详解
    mysql 主从配置,主-》windows,从-》centos6.5
    VMware 虚拟机centos下链接网络配置
    【Mysql】表链接
  • 原文地址:https://www.cnblogs.com/roverliang/p/4964226.html
Copyright © 2011-2022 走看看