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()外,不知道还可以使用什么。
MySQL时间函数,用起来比PHP还爽的更多相关文章
- mysql时间函数和时间操作
补 原文链接:http://blog.csdn.net/yuxiayiji/article/details/7480785 select timediff('23:40:00', ' 18:30:00 ...
- MySQL 时间函数加减计算
一.MySQL 获得当前日期时间 函数 1.1 获得当前日期 + 时间(date + time) 函数:now() mysql> select now();+———————+| now() |+ ...
- joda-time的简单使用及mysql时间函数的使用(今天,本周,本月)
近期在做一些首页的统计数据复习了下mysql的时间函数,以及后续修改成 传入时间查询时使用的joda-time 软件简介 JodaTime 提供了一组Java类包用于处理包括ISO8601标准在内的d ...
- Mysql时间函数
http://blog.sina.com.cn/s/blog_6d39dc6f0100m7eo.html mysql中函数和关键字不区分大小写.下文函数的datetime参数处既可以用时间字符串也可以 ...
- mysql 时间函数 时间转换函数
时间函数 Now 获取当前时间 current_timestamp 获取当前时间 localtimestamp 时间转换 UNIX_TIMESTAMP "2009-09-15 00:0 ...
- mysql 时间函数date_format
http://toptree.iteye.com/blog/812642今天,在开发邮件系统的时候发现有很多的邮件没有发送成功,想手动把数据修改.找了mysql 的日期函数 获得的pubtime为St ...
- mysql时间函数操作
Mysql时间转换函数 https://blog.csdn.net/w_qqqqq/article/details/88863269 mysql时间日期函数 https://www.cnblogs.c ...
- mysql 时间函数转换
1 NOW() //当前时间 2 SYSDATE() //当前时间 3 CURRENT_TIMESTAMP 4 以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前的 ...
- mysql 时间函数总结
1. 获取当前时间 select now(); // 2018-08-24 11:01:26 select unix_timestamp(); // 1535079695 总结:unix_ ...
随机推荐
- Nginx的配置文件
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...
- MyBatis学习--逆向工程
简介 mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml.po..).企业实际 ...
- 如何升级Ceph版本及注意事项
升级软件版本在日常运维中是一个常见操作. 本文分享一下Ceph版本升级的一些经验. 一般升级流程和注意如下: 1. 关注社区Release notes 和 ceph-user邮件订阅列表,获取社区发 ...
- [转]响应式WEB设计学习(3)—如何改善移动设备网页的性能
原文地址:http://www.jb51.net/web/70362.html 前言 移动设备由于受到带宽.处理器运算速度的限制,因而对网页的性能有更高的要求.究竟是网页中的何种元素拉低了网页在移动设 ...
- Activiti 学习笔记(2016-8-30)
前言 不管学习什么,都必须对知识体系中专有的名词或者特定的语言组织方式 有所了解. 本文仅记录学习过程中的笔记,参考意义因人而定,不保证所言全部正确. 学习方式,百度传课的视频<权威Activi ...
- redis 可视化工具
Redis Desktop Manager 下载 phpRedisAdmin 是一个用php管理redis的工具 下载
- linux下进程权限分析
转自http://blog.chinaunix.net/uid-27105712-id-3349522.html 在linux下,关于文件权限,大部分人接触比较多,也比较熟悉了解.但是对进程权限一般知 ...
- HA模式下历史服务器配置
笔者的集群是 HA 模式的( HDFS 和 ResourceManager HA).在 ” Hadoop-2.5.0-cdh5.3.2 HA 安装" 中详细讲解了关于 HA 模式的搭建,这里就不再赘述 ...
- linux下命令运行目录上程序前面要加./
linux命令行上默认运行path系统变量的路径的程序,所以我们在运行时命令时会在系统变量中查找,而发现查找完系统变量之后是不会再查找当前目录的. 有以下方式解决: 1.在运行当前目录的程序时,前面加 ...
- PHP数组/Hash表的实现/操作、PHP变量内核实现、PHP常量内核实现 - [ PHP内核学习 ]
catalogue . PHP Hash表 . PHP数组定义 . PHP变量实现 . PHP常量实现 1. PHP Hash表 0x1: 基本概念 哈希表在实践中使用的非常广泛,例如编译器通常会维护 ...