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中。我缺少一个=。现在我唯一的问题是它正在搜索今天的日期