Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java如何将日期值传递给MySQL?_Java_Mysql - Fatal编程技术网

java如何将日期值传递给MySQL?

java如何将日期值传递给MySQL?,java,mysql,Java,Mysql,在数据类型为Date的MySQL中,我有一个名为StartDate的列字段。在我的应用程序中,我定义了一种在页面上显示当前日期的方法,如下所示 String today = CoreUtil.parseDate(new Date()); 这基本上是以YYYY-MM-DD格式返回日期,并将其存储在字符串中,这样就可以了 现在,我想将这个值传递到一个函数中,该函数将该值插入列StartDate 我声明的函数如下所示: public void insert_update(String nodeid,

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

String today = CoreUtil.parseDate(new Date());
这基本上是以
YYYY-MM-DD
格式返回日期,并将其存储在字符串中,这样就可以了

现在,我想将这个值传递到一个函数中,该函数将该值插入列
StartDate

我声明的函数如下所示:

public void insert_update(String nodeid,String ts,Date startdt,Date enddt,int enable)
我今天调用此函数并将值
传递给它,如下所示:

 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();
     }

 }

您不应试图将
字符串
转换为
日期
,以便将其插入表中。您可以像使用
preparedStatement
一样使用
date
类型,例如:

Date date = new Date();
PreparedStatement pStmt = connection.prepareStatement("<query>");
pStmt.setDate(1, date);
Date-Date=新日期();
PreparedStatement pStmt=connection.prepareStatement(“”);
pStmt设置日期(1,日期);
javadoc

更新


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

在方法参数中传递字符串日期,而不是日期类型,然后将该日期类型的格式设置为:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH);

formatter.parse(date)

将时间戳(long)存储到数据库中。我不需要该格式在表中显示时间,只需使用
YYYY-MM-DD
1的格式即可。遵守Java命名约定2。停止使用日期。它既笨拙又过时。使用java.time.LocalDate。3.如果方法需要[Local]日期,则不能向其传递字符串。你必须给它一个[本地]日期。首先不要将[Local]日期转换为字符串。直接传过来。并使用准备好的语句将LocalDate作为参数传递。您不应该将日期转换为字符串以将其插入数据库中。上述任何一项都不应该。不要。不要自己创建日期。让数据库使用SQL中的当前_日期执行此操作。并将其存储为
日期
类型,而不是ASCII。简化你的生活。可能的重复。你可能也会发现这很有用,但这也包括小时、分钟和秒。我不希望它会被MySQL的日期类型处理。如果查询中不需要小时、分钟等,可以选择日期部分。哦,我没有使用preparedStatement,只是想知道将参数传递给函数的正确方法该函数接受
date
,因此,将参数传递给函数的正确方法是传递
date
对象。如果函数接受日期,则由该函数将其存储到MySQL中。您的意思是我应该将
date
直接传递到函数参数?感谢您的贡献。请不要教年轻人使用早已过时且臭名昭著的简化格式课程。至少不是第一个选择。而且不是毫无保留的。今天,我们在及其
DateTimeFormatter
中有了更好的功能。并且一定要以
LocalDate
格式保存和传递日期,而不是
字符串。