Postgresql中日期更改问题

时间: 2019-02-14

一、问题描述

问题描述: postgresql数据库表中有个字段order_time, 格式为:yyyymmddhhmmss,长度为14.定义的类型是varchar(14) . 但是有个支付交易日期格式为yyyymmdd hh:mm:ss,开发环境未测试出来, 在生产环境才暴露出来. 当时临时将order_time的字段长度改为20.

二、解决方案

解决方案:

1. 将支付交易日期格式yyyymmdd hh:mm:ss转为yyyymmddhhmmss.

/**
     * 日期格式yyyyMMdd HH:mm:ss改为yyyyMMddHHmmss
     * 如果要将日期格式yyyy-MM-dd HH:mm:ss改为yyyyMMddHHmmss 使用正则表达式: "[[\\s-:punct:]]"
     * @param dateFormat
     * @return
     */
    public static String changeDateFormatToNum(String dateFormat) {
        return dateFormat.replaceAll("[[\\s:punct:]]","");
    }

2. 将order_time字段中yyyymmdd hh:mm:ss存储的数据查找出来, 格式更改为yyyymmddhhmmss.

  1. 查询order_time字段中yyyymmdd hh:mm:ss存储的数据
select * from 表名 where length(order_time)=17;
  1. 格式更改为yyyymmddhhmmss
-- 里层replace去除冒号,外层replace去除空格。 (在开发真实验证过)
update 表名 set order_time = replace(replace(order_time,':',''),' ','') where  length(order_time)=17;

3. 将order_time字段长度更改为14位.

ALTER TABLE 数据库名.表名 MODIFY COLUMN order_time varchar(14) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '订单时间' ;

三、实际情况

后记: 由于在生产环境查询order_time长度为17的数据未查询到, 故不需要更改数据, 只需要把字段长度改为14即可

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型,大...
    garvin阅读 575评论 0 1
  • 丁琳玥:7.12黄金连阴收盘早间刺破低点,唱空嘹亮但日内提防空头陷阱 黄金,昨日的晚盘一根4小时的放量,将价格最低...
    丁玥琳_44fc阅读 146评论 0 0
  • 和一位大叔聊天。40多岁的年纪,外表看起来却已年近花甲,背有些驼,满脸皱纹,透着沧桑。每天起早贪黑,和妻子...
    南希之声阅读 1,302评论 0 3