在工数据库设计中,我们往往会在数据库表中耦合该条纪录的创建时间和更新时间字段,以方便查询或排查问题。
在Mysql5.7及以上版本,我们可以使用其特性自动插入或更新这两个字段,如下:
createAt datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updateAt datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
第一个一句很好理解,我们把默认值设置为CURRENT_TIMESTAMP,即当前时间戳,当我们添加记录时,mysql会自动帮我们把该字段的值设置为当前时间戳。
第二个语句表达的意思是,默认也为当前时间戳,但当我们更新该条纪录时,mysql会自动帮我们更新该字段为更新纪录时的时间戳。
那我们如何使用SQL语句根据这两个字段来查询数据呢,这时我们就需要使用mysql的DATE_FORMAT函数,示例SQL如下:
SELECT * FROM `表名` WHERE createAt BETWEEN DATE_FORMAT("2020-06-28 13:47:29",'%Y-%m-%d %H:%i:%s') AND DATE_FORMAT("2020-06-28 13:47:44",'%Y-%m-%d %H:%i:%s')
其中'%Y-%m-%d %H:%i:%s’ 表示需要格式化日期字符串的格式。
%Y-表示年
%m-表示月(1-12)
%d-表示日期(天)(1-31)
%H-表示小时(0-23)
%i-表示分钟(0-59)
%s-表示秒(0-59)
这样我们就可以根据这两个字段来查询数据了。