首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型不匹配:无法从java.util.Date转换为java.sql.Date

问类型不匹配:无法从java.util.Date转换为java.sql.Date
EN

Stack Overflow用户
提问于 2014-03-12 20:22:47
回答 3查看 17.8K关注 0票数 2

我正在尝试让我的代码在代码中与SimpleDateFormat类一起工作。有人知道为什么吗?祝Julie有愉快的一天

当我在导入的地方运行代码时:导入java.util.Date。我在下面的代码行中得到错误:“类型日期不明确”:

代码语言:javascript
复制
Date startDate = format.parse(req.getParameter("startDate")); 
Date endDate = format.parse(req.getParameter("endDate"));

当我在已经导入的地方运行代码:导入java.sql.Date时,我得到了错误:

代码语言:javascript
复制
Date startDate = format.parse(req.getParameter("startDate")); 
Date endDate = format.parse(req.getParameter("endDate"));

“类型不匹配:无法从java.util.Date转换为java.sql.Date”

代码语言:javascript
复制
import java.sql.Date;

package WorkPackage;

import java.io.*;
import java.sql.*;
import java.text.SimpleDateFormat;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.util.*;
import java.util.Date.*;


    public void doPost(HttpServletRequest req, HttpServletResponse res) 
        throws ServletException, IOException{

        String connectionURL = "jdbc:mysql://localhost/NekiWork";
        Connection connection=null;
        //String startDate = req.getParameter("startDate");
        //String endDate= req.getParameter("endDate");

        try {
            //Load database driver
            Class.forName("com.mysql.jdbc.Driver");
            //Connection to the database
            connection = DriverManager.getConnection(connectionURL, "root", ""); 
            //Getting the data from database

            String sql = "SELECT *, (Day_hours + (Day_minutes / 60)) AS Allday_hours FROM Workdata "
                    + "WHERE Date = startdate = ? AND endDate = ? ";
            PreparedStatement pst = connection.prepareStatement(sql);

            //Date startDate;

            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            Date startDate = format.parse(req.getParameter("startDate")); 
            Date endDate = format.parse(req.getParameter("endDate"));
            pst.setDate(1,startDate);
            pst.setDate(2, endDate);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-12 20:40:50

java.util.Date和java.sql.Date是不同的。数据库仅接受java.sql.Date。

为此,您需要将java.util.Date转换为java.sql.Date。

试试这个:

代码语言:javascript
复制
java.util.Date util_StartDate = format.parse( req.getParameter("startDate") );
java.sql.Date sql_StartDate = new java.sql.Date( util_StartDate.getTime() );

现在,您可以使用此sql_StartDate通过预准备语句设置参数值。

代码语言:javascript
复制
pst.setDate( 1, sql_StartDate );

对jdbc使用的其他sql特定日期使用相同的过程。

票数 4
EN

Stack Overflow用户

发布于 2014-03-12 20:26:50

在同时导入了java.sql.*和java.util.*命名空间的情况下,编译器无法唯一地确定Date标记的最佳类型。在这个例子中,你可以用命名空间来限定你的类型:

代码语言:javascript
复制
java.util.Date startDate = format.parse(req.getParameter("startDate"));
票数 1
EN

Stack Overflow用户

发布于 2020-01-12 09:39:03

代码语言:javascript
复制
Date fechaNace= new java.sql.Date(persona.getFechaNacimiento().getTime());
ps.setDate(6,(java.sql.Date) fechaNace);
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22351434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档