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

 更新时间:2022年12月23日 15:16:28   作者:肖朋伟  
这篇文章主要介绍了MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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用户和数据权限管理详解

    MySQL用户和数据权限管理详解

    这篇文章主要为大家详细介绍了MySQL数据库管理中的用户和数据权限管理,文中的示例代码讲解详细,对我们学习MySQL有一定帮助,需要的可以参考一下
    2022-08-08
  • Spring jdbc中数据库操作对象化模型的实例详解

    Spring jdbc中数据库操作对象化模型的实例详解

    这篇文章主要介绍了Spring jdbc中数据库操作对象化模型的实例详解的相关资料,希望通过本文大家能够了解掌握这部分内容,需要的朋友可以参考下
    2017-09-09
  • MySQL慢查询日志的配置与使用教程

    MySQL慢查询日志的配置与使用教程

    慢查询日志用于记录一些过慢的查询语句,可以帮助管理员分析问题所在,下面这篇文章主要给大家介绍了关于MySQL慢查询日志的配置与使用教程,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-09-09
  • Mysql数据库中子查询的使用

    Mysql数据库中子查询的使用

    本文给大家分享mysql数据库中子查询的使用,非常不错具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-10-10
  • 解决Mysql 8.0.17 winx64版本安装过程中遇到的问题

    解决Mysql 8.0.17 winx64版本安装过程中遇到的问题

    这篇文章主要介绍了Mysql 8.0.17 winx64版本安装过程中遇到的问题 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • mysql 索引详细介绍

    mysql 索引详细介绍

    这篇文章主要介绍了mysql 索引详细介绍的相关资料,需要的朋友可以参考下
    2016-09-09
  • Mysql8.0.22解压版安装教程(小白专用)

    Mysql8.0.22解压版安装教程(小白专用)

    这篇文章主要介绍了Mysql8.0.22解压版安装教程(小白专用),文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • MySQL在grant时报错ERROR 1064 (42000)的原因及解决方法

    MySQL在grant时报错ERROR 1064 (42000)的原因及解决方法

    网上查到的grant方式大多会报错,主要原因是MySQL版本8.0后不能再使用原来的方式,这篇文章主要介绍了MySQL在grant时报错ERROR 1064 (42000),需要的朋友可以参考下
    2022-08-08
  • MYSQL数据库连接池及常见参数调优方式

    MYSQL数据库连接池及常见参数调优方式

    这篇文章主要介绍了MYSQL数据库连接池及常见参数调优方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Mysql8导入数据到Mysql5.7的实现步骤

    Mysql8导入数据到Mysql5.7的实现步骤

    Mysql8的默认字符集为utf8mb4,当我们有需求要把Mysql8的数据导入到Mysql5.7时,就会出现不支持,本文主要介绍了2种解决方法,具有一定的参考价值,感兴趣的可以了解一下
    2022-03-03

最新评论