zoukankan      html  css  js  c++  java
  • Timestamp解析0000-00-00 00:00:00报格式错误

    mysql中存储的是Timestamp类型的0000-00-00 00:00:00,

    但是在java程序中使用

    Timestamp.valueOf("0000-00-00 00:00:00")

    打印出来这个值会报解析格式错误:

    因为datetime类型取值范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59

    timestamp类型取值范围:1970-01-01 00:00:00 到 2037-12-31 23:59:59

    Timestamp识别不了全0的日期格式。

    在建表的时候,通常会使用如下的方式创建某个字段:

    create_time TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',

    也就是说如果设置的字段为null,会自动转换成0000-00-00 00:00:00。

    而不是想当然的先用

    Timestamp.valueOf("0000-00-00 00:00:00")

    这种方式转换成全0,再insert到数据库中。

    只要在连接db的配置中加入:zeroDateTimeBehavior=convertToNull

    jdbc:mysql://localhost:3306/mydbname?zeroDateTimeBehavior=convertToNull

    就可以在 0000-00-00 00:00:00 和 null之间进行转换。

    那么如果在db中存储的是0000-00-00 00:00:00,读取出来的就是null

  • 相关阅读:
    shuffle过程分析
    自定义分组
    自定义排序及Hadoop序列化
    MapReduce常见算法
    Partitioner
    Combiner
    自定义Counter使用
    WordCount_命令行运行时指定参数
    老的API实现WordCount
    Hadoop自定义类型处理手机上网日志
  • 原文地址:https://www.cnblogs.com/sonofelice/p/6580483.html
Copyright © 2011-2022 走看看