开发者

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

目录
  • TIMESTAMP类型返回日期时间数据中带有 T
    • 场景描述
    • 通过注解格式化(方法一)
    • 通过全局配置(方法二)
  • mysql时间类型timestamp知识点
    • mysql日期时间类型
    • Timestamp实例
  • 总结

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

    场景描述

    MySQL 中使用 TIMESTAMP 类型

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

    返回 jsON 数据:

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

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

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

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

    结果:

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

    通过全局配置(方法二)

    @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
    year1190121Hmezh55

    知识点:

    • 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

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

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

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

    DATETIME是date和time的结合

    Timestamp实例

    CREATE TABLE ttt (t timestamp);

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

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

    INSERT INTO ttt VALUES(NULL)
    select * from ttt

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

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

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

    alter TABLE ttt add t2 timestamp;
    SHOW CREATE TABLE tttHmezh;
    CREATE TABLE `ttt` (
      `t` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     Hmezh `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)

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

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

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

    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

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

    此时再去

    update ttt set t2 = '2015-11-28 04:www.devze.com00:40' where t='2015-11-27 03:02:50'

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

    t没发生变化

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新数据库

    数据库排行榜