MYSQL之DATE_FORMAT灵活运用

前言

转眼间,加入程序员的行列有几年时间了。回想一下,原来自己一直没有总结过所遇到的问题,于是许多的知识点随着不经常使用,都会在脑子里慢慢的淡忘掉。我觉得这是一件非常槽糕的事情!所以从现在开始,我会慢慢的把自己在敲码过程中遇到的问题,以及一些有用的知识点慢慢的累计起来放到自己的博客内,在此如果与某些大神的文章类似,纯属巧合。

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。
来一张表格让大家看看:
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小时制的时间吧。想想数据量大了之后,会遗失掉多少的数据吧…

结尾

时间不早了,今天就先写到这里吧,第一次写,如果各位小伙伴有什么建议或者意见,欢迎留言!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值