mysql字符串类型时间比较大小

  • Post author:
  • Post category:mysql


日常随笔:

这里记录一个最近遇到的mysql字符串类型时间的问题

数据结构:

|year(int)| month(int)|

|2016 | 7 |

|2016 |10|

使用CONCAT_WS拼接时间为yyyy-m格式,返回的是字符串类型

注:经测试字符串时间yyyy-m与yyyy-m单独比较,可以得到正确结果,但是yyyy-m与yyyy-mm比较得不出正确结果。


因为字符串比较首先会比较字符长度。

因而直接回返回false

例:

– 字符串时间yyyy-mm,yyyy-m时间格式,既转不了时间格式,也转不了时间戳,亦不能比较大小

– 以下是sql

SELECT DATE_FORMAT(“2019-7”,’%Y-%m’),UNIX_TIMESTAMP(DATE_FORMAT(“2019-7”,’%Y-%m’)),“2019-7”<“2019-10”;

那么像以上数据结构以及数据组合的情况怎么比较。

这里可以用到LPAD填充函数

例:

– 使用LPAD填充函数,不足位数补0

SELECT CONCAT_WS(“-“,2019,LPAD(6,2,0)),CONCAT_WS(“-“,2019,LPAD(10,2,0)),CONCAT_WS(“-“,2019,LPAD(6,2,0))<CONCAT_WS(“-“,2019,LPAD(10,2,0));

这样操作既可得到比较后的正确结果。



版权声明:本文为loney_wolf原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。