热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL时间函数,用起来比PHP还爽

前一篇写了PHP的时间函数(还是草稿),这一篇就写Mysql的时间函数吧。最近做的项目,关乎权限,于是自然而然的就与有效期联系在了一起。其中有一个功能是生成特殊表格

 前一篇写了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()外,不知道还可以使用什么。


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
author-avatar
勇_俊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有