前言
转眼间,加入程序员的行列有几年时间了。回想一下,原来自己一直没有总结过所遇到的问题,于是许多的知识点随着不经常使用,都会在脑子里慢慢的淡忘掉。我觉得这是一件非常槽糕的事情!所以从现在开始,我会慢慢的把自己在敲码过程中遇到的问题,以及一些有用的知识点慢慢的累计起来放到自己的博客内,在此如果与某些大神的文章类似,纯属巧合。
MYSQL之DATE_FORMAT()的介绍以及用法
介绍一下此次在mysql存储时间的类型为:datetime
在获取这个类型的字段时候,如果作为筛选条件就会有比较的方式(> , < ,≥ , ≤ , between and等),如果作为显示条件时候会有更多的显示方式,这样可以省去从数据库取出数据,在代码层修改代码的烦恼。下面我分开来详细说明一下。
介绍
定义:DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
基本语法:DATE_FORMAT(date,format)
用法
话不多说,大家都是有基础的大忙人,直接来例子吧!
例子:start_time >= DATE_FORMAT(“2019-01-01”,"%Y-%m-%d %H:%i:%s")
使用起来看着是没有什么问题,觉得也没有什么需要介绍的,但是这个format的格式是很多的,可以各种组合来使用,那是千变万化,就看你是否能想到了。与其说介绍DATE_FORMAT 倒不如说介绍 DATE_FORMAT 中的 format。
来一张表格让大家看看:
各种的组合条件就会有不同的表现形式,我能想到的一些用法在下面就直接用例子来写出来吧。
例子:
select DATE_FORMAT(“2019-01-01”,"%Y-%m-%d %H:%i:%s") from dual;
#查询出来结果:2019-01-01 00:00:00
select DATE_FORMAT(“2019-01-01”,"%Y-%m-%d %H:%i:%s") from dual;
#查询出来结果:2019-01-01 00:00:00
select DATE_FORMAT(“2019-01-01”,"%Y-%m-%d %h:%i:%s") from dual;
#查询出来结果:2019-01-01 12:00:00
select DATE_FORMAT(“2019-01-01”,"%Y-%m-%d %h:%i:%s %p") from dual;
#查询出来结果:2019-01-01 12:00:00 AM
select DATE_FORMAT(“2019-01-01 13”,"%Y-%m-%d %I:%i:%s %p") from dual;
#查询出来结果:2019-01-01 01:00:00 PM
select DATE_FORMAT(“2019-01-01”,"%y-%m-%d %H:%i:%s") from dual;
#查询出来结果:19-01-01 00:00:00
select DATE_FORMAT(“2019-02-05”,"%j") from dual;
#查询出来结果:036
select DATE_FORMAT(“2019-01-02”,"%X_%V") from dual;
#查询出来结果:2018_52
select DATE_FORMAT(“2019-01-01”,"%x_%v") from dual;
#查询出来结果:2019_01
select DATE_FORMAT(“2019-01-02”,"%X_%V_%w_%W") from dual;
#查询出来结果:2018_52_3_Wednesday
select DATE_FORMAT(“2019-01-02”,"%x_%v_%w_%W") from dual;
#查询出来结果:2019_01_3_Wednesday
当然还有其他的组合方式,在这里因为手里还有工作,就不一一来举例了,各位小伙伴可以根据兴趣自己来组装了。
这里有踩过的坑
用法大家都看了,在这里有一个我踩过的坑,之前没有注意到,现在分享出来,希望大家以后也不要踩这坑。
SELECT
DATE_FORMAT( "2019-11-20", "%Y-%m-%d %H:%i:%s" ),
NOW( ),
DATE_FORMAT( "2019-11-20", "%Y-%m-%d %H:%i:%s" ) > NOW( )
FROM
DUAL;
SELECT
DATE_FORMAT( "2019-11-20", "%Y-%m-%d %h:%i:%s" ),
NOW( ),
DATE_FORMAT( "2019-11-20", "%Y-%m-%d %h:%i:%s" ) > NOW( )
FROM
DUAL;
看看上面两个sql有什么问题么?
有人会说,你是不是搞错了,没有什么不同啊。所以到大家仔细看看,format的格式,一个用H另一个用h,
这里这就导致了这两个sql查询出来的不一样了,废话不多说,拿出结果给大家看看,验证一下自己的想法。
第一个:2019-11-20 00:00:00 2019-11-20 11:25:07 0
第二个:2019-11-20 12:00:00 2019-11-20 11:25:07 1
看到么,对比时候出现差异了,我想用H格式出来的时间,才是大部分人想得到的24小时制的时间吧。想想数据量大了之后,会遗失掉多少的数据吧…
结尾
时间不早了,今天就先写到这里吧,第一次写,如果各位小伙伴有什么建议或者意见,欢迎留言!