JAVA里面如何将字符串日期插入到MYSQL数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA里面如何将字符串日期插入到MYSQL数据库相关的知识,希望对你有一定的参考价值。

获得了字符串日期,mysql数据库中是日期类型 如何转换并插入数据库 我用的preparestatement pstam = conn.prepareStatement(sql); pstam.setDate(7,(Date) new SimpleDateFormat().parse(user.getBirthday())); 但是这样转换好像不行

参考技术A 需要先指定日期的格式
这样改
new
SimpleDateFormat("yyyy-MM-dd").parse(user.getBirthday())
就可以转了,
注意:user.getBirthday()的格式必须是"1987-11-22"这种格式的,就是要跟指定的yyyy-MM-dd格式匹配,当然也可以指定yyyyMMdd对应的格式就是19871122了,这些看一些API跟着写几个例子试试就会了
不过转化得到的是java.util.Date,
而pstam.setDate()中需要的是java.sql.Date,可以这样转化
java.util.Date
date
=
new
SimpleDateFormat("yyyy-MM-dd").parse(user.getBirthday());
new
java.sql.Date(date.getTime())这样就可以转化了,而不是像你程序那样强转

使用 PreparedStatement 将日期插入 MySQL 数据库

【中文标题】使用 PreparedStatement 将日期插入 MySQL 数据库【英文标题】:Inserting date into MySQL database using a PreparedStatement 【发布时间】:2012-10-16 13:52:40 【问题描述】:

我想使用准备好的语句将字符串日期更新到 MySQL 数据库中。我已经尝试了很多,但总是得到错误java.util.Date cannot parse into java.sql.Date,反之亦然。我没有在这里导入任何东西。请根据您的回答导入。

public class Date1 
 
    public static void main(String args[]) 
    
        String source="2008/4/5";              
        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");                       
        java.sql.Date d=(Date) format.parse(source);             
        Class.forName("com.mysql.jdbc.Driver");        
        Connection con=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/employee", "root", "root");   
        PreparedStatement ps=con.prepareStatement("insert into ankur1 values(?)");          
        ps.setDate(1,(java.sql.Date) d);    
        ps.executUpdate();
    

【问题讨论】:

可以发一下ankur1表的详细信息吗 `我没有在这里导入任何东西`-> 甚至没有 java.sql.Date?? 【参考方案1】:

写这个

java.sql.Date d= new java.sql.Date(format.parse(source).getTime());

而不是这个:

java.sql.Date d=(Date) format.parse(source);

因为您不能只将java.util.Date 转换为其子类型java.sql.Date。你必须转换它。另请注意,正如 Bill the Lizard 评论的那样,您的格式字符串与您的实际日期格式不匹配。

【讨论】:

这是正确的。另请注意,"2008/4/5" 的格式不是"dd/MM/yyyy" @BilltheLizard:对,我都没注意到 @Lukas Eder 我写了你的行,只要它成功反映在数据库上,就像我有这个 String str = "2006-12-28"; SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd"); java.sql.Date d= new java.sql.Date(formatter.parse(str).getTime()); ps.setDate(1,d);它正在反映,但无论我提供什么数据,它在 mysql 5.2.38 中的每种情况下都反映为 01 @ankurjadiya:我不确定你想说什么。除了您在问题中已经提到的问题之外,您还有其他问题吗? @ankur jadiya:您评论中的格式字符串错误。使用“yyyy-MM-dd”。所以大写的月份。用小写字母 (mm) 表示分钟。【参考方案2】:
java.sql.Timestamp date = new java.sql.Timestamp(new java.util.Date().getTime());

pstmt.setTimestamp(1, date);

试试这个可能有用..谢谢

【讨论】:

【参考方案3】:

这是解决这个问题的另一种更简单的方法:

preparedStatement = connect.prepareStatement("INSERT INTO test.TABLENAME VALUES (default, STR_TO_DATE( ?, '%m/%d/%Y'), STR_TO_DATE(?, '%l:%i %p'),?,?,?,?,?)"); 

或者,您可以替换“?”使用真实数据。

这就是我在 mySQL 中插入日期和时间的方式,刚刚弄明白了。

我们可以调整各种参数以满足我们的数据格式,简单干净。

【讨论】:

以上是关于JAVA里面如何将字符串日期插入到MYSQL数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用 PreparedStatement 将日期插入 MySQL 数据库

java怎么使用日期格式化将时间插入mysql datetime数据类型中?

求助!!如何在java代码中,将日期插入mysql数据库(对应字段类型是datetime),用JDBC连接数据库。

如何在 Java 中将日期插入 MySQL 数据库表?

在java中如何将日期字符串保存到Oracle数据库中对应的Date类型字段中

从以下位置插入/转换日期:C++ 到 mySQL db