这里先推荐个好用的工具包,里面收集了很多常用的方法及工具 :https://hutool.cn/docs/#/
里面有些对时间格式的处理工具。
MySql中关于日期的类型有Date/Datetime/Timestamp三种类型。
Date类型的字段,存储数据格式为YYYY-MM-DD,它支持的范围为'1000-01-01'到'9999-12-31',并且允许使用字符串或数字为此列复制。
datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestamp 4 bytes YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 ~ 2038
date 3 bytes YYYY-MM-DD 1000-01-01 ~ 9999-12-31
sql:insert into datetest (date) value ('2019-03-16')
timestamp 字段会赋默认值
sql:insert into datetest (date) value ('2019-03-16 12:12:12')
date类型字段只会保存YYYY-MM-DD
sql:insert into datetest (date) value ('1552714004')
date类型不能保存时间戳
Datetime类型的字段,日期和时间的组合,存储格式为:YYYY-MM-DD HH:MM:SS,它支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59',并且允许使用字符串或数字进行分配值。
sql:insert into datetest (datetime) value ('2019-03-16')
sql:insert into datetest (datetime) value ('2019-03-16 12:12:12')
sql:insert into datetest (datetime) value ('1552714004')
Timestamp这是时间戳,从1970-01-01 00:00:00到当前的时间差值。
sql:insert into datetest (timestamp) value ('2019-03-16')
sql:insert into datetest (timestamp) value ('2019-03-16 12:12:12')
sql:insert into datetest (timestamp) value ('1552714004')
sql:select * from datetest where date(datetime) > '2019-03-16'
date()函数会将datetime类型截取YYYY-MM-DD进行比较
sql:select * from datetest where DATE_FORMAT(datetime,'%Y%m%d')>DATE_FORMAT('2019-03-16','%Y%m%d')
date_format()函数按照指定格式处理数据再进行判断。
sql:SELECT * FROM datetest WHERE create_time>UNIX_TIMESTAMP('2019-03-15')
unix_timestamp()函数会将datetime类型的时间转化为时间戳再进行比较。
sql:select * from datetest where FROM_UNIXTIME(create_time)>'2019-03-15 00:12:21'
FROM_UNIXTIME()函数会将时间戳转化为datetime类型再进行比较。