首页 > 解决方案 > java-应该如何将日期值传递给 MySQL?

问题描述

我有一个在数据类型StartDate的 MySQL 中调用的列字段Date。在我的应用程序中,我定义了一种在我的页面上显示当前日期的方法,如下所示。

String today = CoreUtil.parseDate(new Date());

这基本上以YYYY-MM-DD格式返回日期并将其存储在一个很好的字符串中。

现在,我想将此值传递给一个将值插入到 column 的函数StartDate

我声明的函数如下:

public void insert_update(String nodeid,String ts,Date startdt,Date enddt,int enable)

我正在调用此函数并将值传递today给它,如下所示:

 fileFacade.insert_update(...,....,today,....,...);

现在我不是这个日期的专家,并且看到它不允许我传递我将它定义为日期参数的值,我应该如何处理这个问题?

我应该将它转换回日期格式并传递值还是 MySQL 允许将字符串值插入到日期数据类型列中?

我只想将值以YYYY-MM-DD格式存储在我的表中。

编辑:

我的功能:

public void insert_update(String nodeid,String ts,Date startdt,Date enddt,int enable){
     try {

         //   UrlLink attr = em.find(UrlLink.class,n);


         String sql="UPDATE urllink SET STARTDT="+startdt+",ENDDT="+enddt+",ENABLE="+enable+"WHERE URL='f0="+nodeid+"&ts="+ts + "'";

         em.createNativeQuery(sql).executeUpdate();




     }catch (Exception e) {
         e.printStackTrace();
     }

 }

标签: javamysql

解决方案


您不应尝试将其转换String为 aDate以便将其插入表中。您可以date按原样使用 type preparedStatement,例如:

Date date = new Date();
PreparedStatement pStmt = connection.prepareStatement("<query>");
pStmt.setDate(1, date);

这是javadoc。

更新

如果此处的目的是以指定格式显示日期,那么我强烈建议DATE在查询时将日期存储为 MySQL 格式。我们如何存储日期的决定不应取决于它需要如何在前端显示,因为我们可能需要在多个用户界面上显示不同的日期格式。


推荐阅读