MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决

Hana ·
更新时间:2024-11-13
· 1868 次阅读

目录

TIMESTAMP类型返回日期时间数据中带有 T

场景描述

通过注解格式化(方法一)

通过全局配置(方法二)

MySQL时间类型timestamp知识点

mysql日期时间类型

Timestamp实例

总结

TIMESTAMP类型返回日期时间数据中带有 T 场景描述

MySQL 中使用 TIMESTAMP 类型

实体类使用 java.util.Date 类型

返回 JSON 数据:

通过注解格式化(方法一)

可以在日期类型属性上,或者 GET 方法加上 Jackson 的 @JsonFormat 注解方式来格式化,例如:

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date updateTime;

结果:

通过全局配置(方法二) @Configuration public class WebMvcConfig { @Bean MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); ObjectMapper mapper = new ObjectMapper(); mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); converter.setObjectMapper(mapper); return converter; } } MySQL时间类型timestamp知识点 mysql日期时间类型 日期类型字节最小值最大值
DATE41000-01-019999-12-31
DATETIME81000-01-0100:00:00
TimeStamp41970010108000012038年
Time3-838:59:59838:59:59
year119012155

知识点:

1 如果需要经常插入或者更新日期为当前时间 则通常使用Timestamp,timestamp值返回后显示为”YYYY-MM-DD HH:MM:SS”格式的字符串

2 如果只表示年份可以用year 他比date占用更少的空间year有2位或者4位格式的年默认为4位

3 每种日期类型都有一个有效值范围如果超出这个范围将以零值进行存储

DATE TIME DATETIME为最常用

实例:

CREATE TABLE t (d date , t time , dt datetime); desc t

insert INTO t VALUES(NOW(),NOW(),NOW()) select * from t

DATETIME是date和time的结合

Timestamp实例 CREATE TABLE ttt (t timestamp);

系统自动给timestamp加上了默认值

INSERT INTO ttt VALUES(NULL) select * from ttt

插入null 系统自动插入了当前时间戳

mysql中只给表中的第一个timestamp字段类型设置默认值为当前日期 如果有第二个timestamp类型则默认值设置为0

alter TABLE ttt add t2 timestamp; SHOW CREATE TABLE ttt; CREATE TABLE `ttt` ( `t` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `t2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ) ENGINE=MyISAM DEFAULT CHARSET=utf8

mysql一个表中值允许一列的默认值为current_timestamp

INSERT INTO ttt VALUES(null,null)

update ttt set t2 = '2015-11-28 03:00:40' where t='2015-11-27 03:00:40'

t2 变了 t也变化成了当前时间 这是一个大坑 尤其是在一些需要按创建时间排序的需求中

所以结论是在mysql中使用时间字段timestamp时注意一定要 加上初始化的值 并且不能是current_timestamp

修改t为有初始值

alter TABLE ttt change `t` `t` timestamp default '0000-00-00 00:00:00' NOT NULL ; desc ttt

此时再去

update ttt set t2 = '2015-11-28 04:00:40' where t='2015-11-27 03:02:50'

t没发生变化

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持软件开发网。



日期时间 数据 Mysql

需要 登录 后方可回复, 如果你还没有账号请 注册新账号