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

时间:2014-03-12 12:22:47

标签: java mysql simpledateformat

我试图让我的代码在代码中使用SimpleDateFormat类。有人知道为什么吗?祝朱莉度过愉快的一天

当我运行我导入的代码时:import java.util.Date。我收到错误: “类型日期含糊不清”的行:

Date startDate = format.parse(req.getParameter("startDate")); 
Date endDate = format.parse(req.getParameter("endDate"));

当我运行我导入的代码时:import java.sql.Date;我收到错误:

Date startDate = format.parse(req.getParameter("startDate")); 
Date endDate = format.parse(req.getParameter("endDate"));

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

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

3 个答案:

答案 0 :(得分:4)

java.util.Datejava.sql.Date不同。数据库仅接受java.sql.Date 为此,您需要将java.util.Date转换为java.sql.Date

试试这个:

java.util.Date util_StartDate = format.parse( req.getParameter("startDate") );
java.sql.Date sql_StartDate = new java.sql.Date( util_StartDate.getTime() );

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

pst.setDate( 1, sql_StartDate );

在其他特定于sql的日期使用相同的过程与jdbc一起使用。

答案 1 :(得分:1)

如果同时导入了java.sql.*java.util.*命名空间,则编译器无法唯一确定Date令牌的最佳类型。在这种情况下,您可以使用命名空间限定您的类型:

java.util.Date startDate = format.parse(req.getParameter("startDate"));

答案 2 :(得分:-2)

Date fechaNace= new java.sql.Date(persona.getFechaNacimiento().getTime());
ps.setDate(6,(java.sql.Date) fechaNace);