Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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 将输入日期字符串转换为SQL日期类型_Java_Mysql_Sql - Fatal编程技术网

Java 将输入日期字符串转换为SQL日期类型

Java 将输入日期字符串转换为SQL日期类型,java,mysql,sql,Java,Mysql,Sql,我已经找了一整天这个答案,但我什么也没有得到 我有一个如下格式的字符串: st.executeUpdate("INSERT INTO `fitnessClasses`(`session`, `date`, `price`, `trainer`, `level`, `type`) VALUES ('"+session+"', '"+sqlDate+"', '"+price+"', '"+trainer+"', '"+level+"', '"+classType+"')"); ResultSet

我已经找了一整天这个答案,但我什么也没有得到

我有一个如下格式的字符串:

st.executeUpdate("INSERT INTO `fitnessClasses`(`session`, `date`, `price`, `trainer`, `level`, `type`) VALUES ('"+session+"', '"+sqlDate+"', '"+price+"', '"+trainer+"', '"+level+"', '"+classType+"')");
ResultSet result = st.executeQuery("SELECT * FROM `fitnessClasses` WHERE `session` = '"+session+"' AND `date` '"+finalDate+"' AND `type` = '"+classType+"' AND `level` = '"+level+"'");
年月日

我想把它输入SQL数据库

日期类型的数据库字段显示格式为yyyy-mm-dd

目前,我有以下代码:

    String inputDate = dateBookingEntry.getText();
    LocalDate interDate = LocalDate.now();
    interDate.parse(inputDate,DateTimeFormatter.ofPattern("dd/MM/yyyy"));
    java.sql.Date finalDate = java.sql.Date.valueOf(interDate);
当我输入日期12/12/2020作为字符串时,我会收到错误消息:

java.sql.SQLSyntaxErrorException:您的sql中有一个错误 句法;检查与MySQL服务器版本对应的手册 在2020-01-29'附近使用正确的语法

我不知道我做错了什么,也不知道如何修复它。我知道它显示的是当前日期而不是输入的日期,但即使这是问题所在,为什么它会显示SQL语法错误

我应该在这里换什么才能让它工作

编辑:

此表的SQL插入代码如下所示:

st.executeUpdate("INSERT INTO `fitnessClasses`(`session`, `date`, `price`, `trainer`, `level`, `type`) VALUES ('"+session+"', '"+sqlDate+"', '"+price+"', '"+trainer+"', '"+level+"', '"+classType+"')");
ResultSet result = st.executeQuery("SELECT * FROM `fitnessClasses` WHERE `session` = '"+session+"' AND `date` '"+finalDate+"' AND `type` = '"+classType+"' AND `level` = '"+level+"'");
上面提到的带有错误的完整SQL代码如下所示:

st.executeUpdate("INSERT INTO `fitnessClasses`(`session`, `date`, `price`, `trainer`, `level`, `type`) VALUES ('"+session+"', '"+sqlDate+"', '"+price+"', '"+trainer+"', '"+level+"', '"+classType+"')");
ResultSet result = st.executeQuery("SELECT * FROM `fitnessClasses` WHERE `session` = '"+session+"' AND `date` '"+finalDate+"' AND `type` = '"+classType+"' AND `level` = '"+level+"'");
编辑2:

好吧,我现在意识到我错过了一个=


现在sqlselect可以工作了,但是它搜索的是今天的日期,而不是输入的日期。我想您需要类级别的解析,比如

LocalDate interDate=LocalDate.parseinputDate等等
当前,您正在将interDate设置为now,这是当前日期,这就是为什么您以今天的日期结束,而不是输入的日期。

看起来像您的查询字符串?是畸形的。。。你能展示一下你是如何建造它的吗?错误消息显示格式正确的日期,前面是双引号,后面是单引号。我认为这在任何SQL方言中都不起作用。。。后面可能有两个单引号。。。但是,SQL不喜欢这样。请向我们展示INSERT语句以及您执行它的方式。您可以将此日期列更改为字符串,而不是数据库中的时间,然后您可以轻松地插入它。我已使用SQL语句添加到原始post中。我缺少一个=。现在我唯一的问题是它正在搜索今天的日期