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_ ...
随机推荐
- OFFSET约束(OFFSET IN 和OFFSET OUT)
OFFSET 的意思是偏移.对于同步时序电路来说,数据和时钟之间的偏移量是必须要关注的.OFFSET IN和OUT分别对应的是输入和输出FPGA数据和时钟之间的偏移关系,本文将分析这一种关系.阅读本文 ...
- 发布新博客皮肤red_autumnal_leaves
感谢sevennight为大家精心设计了一款博客皮肤——red_autumnal_leaves! [名称] red_autumnal_leaves[标题] 红叶[设计者] sevennight[简介] ...
- C++学习准则
C++学习准则 1.把C++当成一门新的语言学习(和C没啥关系!真的): 2.看<Thinking In C++>,不要看<C++变成死相>(C++编程思想,翻译的非常差): ...
- nios II--实验2——led软件部分
软件开发 首先,在硬件工程文件夹里面新建一个software的文件夹用于放置软件部分:打开toolsàNios II 11.0 Software Build Tools for Eclipse,需要进 ...
- [BZOJ1407][NOI2002]Savage(扩展欧几里德)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1407 分析: m,n范围都不大,所以可以考虑枚举 先枚举m,然后判定某个m行不行 某个 ...
- Smarty单模板多缓存
Smarty单模板多缓存 单模板多缓存 在生成缓存.判断缓存是否存在时,增加第二个参数,会根据第二个参数来确定对应的缓存文件 清除缓存
- myeclipse 连接svn服务器验证位置时发生错误 404 forbidden
来源于:https://my.oschina.net/softwarechina/blog/220300 网上有文章说是C:\Users\thinkpad\AppData\Roaming\Subver ...
- 用cmd重命名.htaccess
本人上天修改PHP下伪静态文件htaccess.txt,需要改为.htaccess要是在Linux倒是很随意的事情,可惜window不给改,真的不可改吗,其实方法还是很多的,比如复制在记事本另存也可以 ...
- EF(Entity Framework)发生错误”正在创建模型,此时不可使用上下文“的解决办法。 正在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。请注意不保证 DbContext 的实例成员和相关类是线程安全的。 临时解决了这个问题,在Context的构造函数中,禁用了自动初始化:
解决方案: 禁止上下创建. 修改.删除,默认为true public DataDbContext() : base("name=DataDbContext") { this.Da ...
- iOS的网络环境判断
网络环境的判断有两种方式 1.Reachability 2.AFNetWorking中 AFNetworkReachabilityManager Reachability步骤 (1)导入Reachab ...