精华内容
下载资源
问答
  • 字符串存入数据库date类型字段

    万次阅读 2017-07-25 16:39:33
    string字符串存入数据库date类型字段中, 直接插入会抛异常ORA-01861: 文字与格式字符串不匹配, 可以采用三种方法: 1、使用注解: 2、使用Java将代表日期的字符串转换为java.util.date再插入数据库 3、使用数据库...

    有时候为了计算方便等原因需要将时间以date格式存入数据库,但是前台传过来的数据类型都是字符串,如果将字符串直接插入date类型的字段中会抛:ORA-01861: 文字与格式字符串不匹配

    前台页面有一个表单,如下所示:

    <form action="......" method="get">
        <input type="date" name="date">
        <input type="submit" value="提交">
    </form>

    提交表单时传到后台只是选定日期对应的字符串表示形式:
    如选定:


    这里写图片描述

    由浏览提地址栏可知传到后台只是字符串的”2017-07-25”,

    http://localhost:8080/....../save.do?date=2017-07-25

    这样直接保存到数据库中就会抛如下异常:

    org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [INSERT INTO DEMO (DATATEST) VALUES  (?)]; ORA-01861: 文字与格式字符串不匹配
    ; nested exception is java.sql.SQLDataException: ORA-01861: 文字与格式字符串不匹配

    数据库结构如下:
    这里写图片描述


    解决办法:

    1、使用注解:

    @DateTimeFormat
    @JsonFormat

    在实体类代表日期字段的get方法上添加注解:

    import com.fasterxml.jackson.annotation.JsonFormat;
    import org.springframework.format.annotation.DateTimeFormat;
    
    import java.util.Date;
    
    public class DateModel {
        private Date date;
    
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
        public Date getDate() {
            return date;
        }
    
        public void setDate(Date date) {
            this.date = date;
        }
    
        @Override
        public String toString() {
            return "DateModel{" +
                    "date='" + date + '\'' +
                    '}';
        }
    }

    dao层:(此处使用jdbctemplate)

    import com.srie.ylb.model.DateModel;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
    import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
    import org.springframework.jdbc.core.namedparam.SqlParameterSource;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public class DateDao {
    
        @Autowired
        private JdbcTemplate jdbcTemplate;
    
        public void saveDate(DateModel dateModel) {
            String sql = "INSERT INTO DEMO (DATATEST) VALUES  (:date)";
            NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
            SqlParameterSource sqlParameterSource = new BeanPropertySqlParameterSource(dateModel);
            namedParameterJdbcTemplate.update(sql, sqlParameterSource);
        }
    }

    2、使用Java将代表日期的字符串转换为java.util.date再插入数据库

    使用SimpleDateFormat:

    @RequestMapping("/save")
    public void saveDate(String dateStr) throws ParseException {
        Date date = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr);
       dateDao.saveDate(date);
    }

    也可使用java.util.Calendar,只不过麻烦些。

    dao层:

    public void saveDate(Date date) {
        String sql = "INSERT INTO DEMO (DATATEST) VALUES  (?)";
        jdbcTemplate.update(sql, date);
    }

    3、使用数据库函数TO_CHAR()函数

    dao层:

    public void saveDate(String date) {
        String sql = "INSERT INTO DEMO (DATATEST) VALUES (TO_DATE(?, 'yyyy-MM-dd'))";
        jdbcTemplate.update(sql, date);
    }

    测试结果:


    这里写图片描述

    展开全文
  • java数据库Date类型的处理

    千次阅读 2020-08-11 20:26:18
    java对数据库中Date类型的处理 想必在日常的敲代码生活总,用java操作数据库中的Date类型是不同于其他...util转sql(java的Date存入数据库的Date) 1将输入的字符串类型转为Date import java.util.Date Date date = new

    java对数据库中Date类型的处理

    想必在日常的敲代码生活总,用java操作数据库中的Date类型是不同于其他的,因为Date在导包的时候就分为

    import java.sql.Date;
    
    import java.util.Date
    

    这两种情况,他们也是互相不互通的的两个东西,需要绕一点弯才可以互相转化,下面来说我所知道的一个方法:

    util转sql(java的Date存入数据库的Date)

    1将输入的字符串类型转为Date
    import java.util.Date
    Date date = new Date("1990-02-04");
    
    2将Date转为时间戳
    long time = date.getTime();
    
    3将时间戳为符合sql的Date类型
    import java.sql.Date;
    //经过这个操作以后,这个sqlDate就是可以直接存入数据库得日期类型了
    Date sqlDate = new Date(time);
    //比如如下代码片段
    			String sql = "insert into user values (?,?)";
    			statement = connection.prepareStatement(sql);
    			statement.setInt(1, user.getId());
    			//这里重点
    			statement.setDate(2, sqlDate);
    			//执行sql语句
    			executeUpdate = statement.executeUpdate();
    

    另外几种想法

    用Date.valueof方法,能够最最少步骤得将字符串类型转为Date类型,都不用SimpleDateFormat就行,不过得注意:
    java.sql.Date.valueOf(String s)的s格式必须为YYYY-MM-DD格式

    import java.sql.Date;
    //如果直接是字符串的话可以直接用valueof
    String string = "1990-02-04";
    Date sqlDate1 = Date.valueOf(string);
    //如果是Date类型的话先转为字符串类型,
    //比如Date date = new Date("1990-02-04");
    Date sqlDate2 = Date.valueOf(date .toString())

    本菜鸡是新手,欢迎各位大佬指点。

    展开全文
  • 问题:存入数据库Date类型只有年月日,没有时分秒我尝试过几种方式,结果都是年月日,明明有些地方可以有时分秒...后来想到,所有和时间有关的地方,有一个地方我没有去注意。我是用jboss的hibernate插件生成的...

    问题:存入数据库的Date类型只有年月日,没有时分秒

    我尝试过几种方式,结果都是年月日,明明有些地方可以有时分秒...

    后来想到,所有和时间有关的地方,有一个地方我没有去注意。我是用jboss的hibernate插件生成的对象和hbm.xml配置文件,虽然我配置了主键的类型,但是其他字段我都用的默认的,经过检查hbm.xml文件,发现一个问题。

    原因:hibernate在生成该配置文件的时候,使用的都是基本类型。

    String类型写的不是java.lang.String而是string

    Date类型写的不是java.util.Date而是date

    其他类型都是这样

    (这个date,string看着很奇怪,不知道来自那里..可能是hibernate?)

    解决:瞬间发现问题,修改成正确的类型,重试发现没问题了。

    以前用myeclipse的时候,没有手动配置过hibernate插件的配置文件,都是直接生成。使用Eclipse+插件,没想到需要自己手动配置那么多的内容。

    附上一个配置文件:

    /p>

    "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN"

    "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >

    展开全文
  • 开发过程中经常会遇到Java字符串类型的时间需要存到数据库中,但是Java String 转date得到的结果往往不能直接存到数据库中,因为java数据库date不太一样,因此还需要进一步的处理,非常麻烦。初学者往往费...

      开发过程中经常会遇到Java字符串类型的时间需要存到数据库中,但是Java String 转date得到的结果往往不能直接存到数据库中,因为java与数据库date不太一样,因此还需要进一步的处理,非常麻烦。初学者往往费九牛二虎之力才能解决这一问题。
      经过查阅资料,本人发现SQL本身具有一个to_date方法,可以自己把字符串转化为date类型,因此可以利用这一方法,仅需要在存数据库的时候存为字符串类型就好。

    这里写图片描述

      上图中的publishTime在数据库中是date类型,但是我得到的是String类型,因此仅需要pst.setString(8,weibo.getPublishTime())就能够存入到数据库了。

    展开全文
  • 页面接受的datejava.util.date,放入数据库要用java.sql.date,实现两者之间的转化: 1.user.java package model; import java.util.Date; public class User { public String username,password,address,email...
  • 前端传过来的是属于字符串类型java是无法拿来直接存入数据库的,数据库时间这的字段类型为timestamp 2020-07-07 10:45:57这种类型 这种属于yyyy-MM-dd HH:mm:ss,考虑使用java的工具SimpleDateFormat函数 String ...
  • 实体类中类型为java.util.Date private Date update_date; 数据库中对应字段的类型为...Mapping文件中对应字段的jdbcType为DATE类型 如果显示时分秒的话,只需要将Mapping文件中对应字段的类型改为TIMESTAMP即可....
  • java获取取得Timestamp类型的当前系统时间 格式:yyyy-MM-dd HH:mm:ss 精确值:2019-01-04 11:19:22 方法1: Timestamp t = new Timestamp(System.currentTimeMillis()); preparedStatement.setTimestamp(1,t...
  • Date类型存入数据库

    2009-05-10 15:46:00
    1.采用java.util.Date, 采用new date()存入数据库;在mysql中要把字段类型改为datetime2.如果想在一个action中使用多个manager接口,则要把接口都放到spring中
  • 这两种类型都可以通过jdbc 直接存入数据库 java.util.Datejava.sql.Date的父类, 其主要差异是java.util.Date将存入的数据精确到每天的具体的某个时间段内,而java.sql.Date只是到某一天。
  • date类型只保存年月日,不保存时分秒,datetime和timestimp保 存年月日时分秒,time只保存时分秒。数据库字段值进行比较时,date只比较年月日,datetime和timestimp比较年月日时分秒,time只比较...
  • 场景是:我们现在要增加某一会所的会员信息账户,但是,登记时间数据库中字段类型是Date,而我们获取的是String类型的,直接存是存不进去的,那怎么将String类型的数据存入Date类型数据库中呢??? 我直接用的...
  • JA V A中将String类型的字符串写入数据库的datatime方法如下birth1 = txtyear.getText()+"-"+txtmoth.getText()+"-"+txtday.getText();//获取文本域里的值SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd...
  • 就可以获得java.sql.Date类型了 可以了解一下SimpleDateFormat,DateFormat有什么用! 当然,这里可以不必转成Date型再进行比较,数据库可以处理String类型的时间比较。  String min=request....
  • 代码如下: 首先获取系统当前的时间: Date date1=new Date(); //Wed Sep 04 20:01:34 CST 2019 把日期格式转换为Timestamp 类型: ...Timestamp timestamp = new Timestamp(date1....即可存入数据库中! ...
  • MySQL数据库对于毫秒大于500的数据进行进位,所以就造成的MySQL中的时间多一秒...//mod for 当Date中的毫秒数大于500时,存入数据库中时,秒数自动+1,故此处将毫秒数设为0 Calendar calendar = Calendar.getInst...
  • 当取出这个值的时候只能用java.sql.Date而且只能显示年月日,我想知道如何才能显示时分秒 PS:不改变用getdate()存入的前提下! 解决方法:将getDate()方法改为getTimestamp()方法 转载于:...
  • sql server里面有个数据类型Datetime存放的就是日期+时间的格式,比如:1900-1-1 16...插入数据库的数据必须是java.sql.Date类型的日期,所以你可以通过类似你上面的处理将字符串转成java.sql.Date类型的日期再存入...
  • 首先明确一点: java数据库的时间Date类型是不一样的mysql的Date : import java.sql.Datejava的Date : import java.util.Date从java中向数据库存入一个Date类型时,我们需要将java的Date转换为数据库的Date才能...
  • 我问的是双向的,数据库中的Date也能转换成String显示在前台页面。 我用的框架是springmvc+mybatis 我知道两种实现方式: A:自定义类型转换器(实现Converter,T>) 这样的缺点是只能单向转换。如果我要双向转换,就...
  • 存入数据库的日期类型(推荐)

    千次阅读 2017-02-07 11:00:11
    java.util.Date转换为java.sql.Date带时分秒  ...Java在向数据库中插入时间的时候,常常遇到时、分、秒丢失的情况,这种情况的发生一般是由于时间日期对象使用错误造成的。 java.util.Date是不能
  • 使用JDBC操作Oracle数据库时,使用java.sql.Date类型对应数据库date类型,此时只能保存和读取日期部分,  时间(时分秒)部分不能读取和保存;  查询结果集可以直接获取Date类型的数据:java.sql.Date date=...
  • 环境:  Java 1.5,MyBatis,Oracle10gr2   ...,存入Oracle数据库后,会发现日期全部变为"yyyy-MM-dd 12:00:00”,丢失时间精度。   解决:  思路:统一配置的时间类型。 1、Orac...
  • //先将String类型转换为util.date类型,再转换为sql.date类型 1.jsp层 出生日期: <input type="date" name="bir"/>` 2.servlet层: SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); java.sql.Date...
  • java如何将日期和时间同时存入数据库 默认分类 2009-04-23 12:20:46 阅读244 评论0 字号:大中小 订阅 sql server里面有个数据类型Datetime存放的就是日期+时间的格式,比如: 1900-1-1 ...
  • 1. 使用JDBC操作Oracle数据库时,使用java.sql.Date类型对应数据库date类型,此时只能保存和读取日期部分, 时间(时分秒)部分不能读取和保存; 查询结果集可以直接获取Date类型的数据:java.sql.Date date=...
  • 在数据库中设置时间类型date,如何在获取系统当前时间然后存入数据库呢? 这里需要用到java.sql.Date,它是java.util.Date的子类。 解决方法如下: Date date=new Date(); java.sql.Date sqlDate=new java.sql....
  • 首先明确一点: java数据库的时间Date类型是不一样的mysql的Date : import java.sql.Datejava的Date : import java.util.Date从java中向数据库存入一个Date类型时,我们需要将java的Date转换为数据库的Date才能...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 178
精华内容 71
关键字:

java存入数据库date类型

java 订阅