日期格式月日 MM-dd 进行比较和确定范围解决方案

1、常见日期格式

常见日期格式,无论是数据库还是程序,都能方便比较大小,圈定时间范围。

yyyy-MM-dd HH:mm:ss

yyyy-MM-dd

yyyy/MM/dd HH:mm:ss

yyyy/MM/dd

yyyyMMddHHmmss

yyyyMMdd

2、MM-dd格式

有时业务只要求记录月日,即MM-dd格式,这种格式,数据库和程序,都不能很好的支持;如果定义为字符串格式,日期比较和范围锁定也都不太理想,特别是跨年的时间范围,就更加困难。

3、解决方案

创建数据库脚本,如下

CREATE TABLE `monthday` (
  `id` int(12) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `dateTime` datetime DEFAULT NULL COMMENT '日期',
  `monthDay` varchar(8) DEFAULT NULL COMMENT '月日',
  `num` int(4) DEFAULT NULL COMMENT '月*10+日',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

给num字段,创建索引,必要的。 

ALTER TABLE `ddyunf`.`monthDay`   
  ADD  INDEX `monthDay_num` (`num`);

说明,num字段,公式:num = '月份*100'+'天'

1)日期大小比较

如此,比较月日格式日期大小,可以通过比较num大小来实现,注意公式中,天的位数确保为2位,比如1号,必须为01;

另外,公式的加法,是字符串的拼接操作,最终转为数值进行存储。

2)日期范围查询

时间范围的查询,是按照公式,先计算起期的值,终止日期的值,拼接在sql中,执行查询即可。既简单明了,又方便高效。

SELECT * FROM monthDay t WHERE t.num>=1001 AND t.num <=1221;

 

你可能感兴趣的:(解决方案,月日格式日期大小比较,月日格式,月日格式时间范围查询,时间范围,时间大小比较)