Java:java.util.date无法强制转换为java.sql.Time

时间:2013-03-04 17:16:28

标签: java sql time insert

我有时间从millis转换,现在我想用这个时间值创建一个SQL Insert。我尝试了这个,但它不起作用:

        String INSERT_RECORD ="INSERT INTO PRAVIDLA (CAS,DEN,MIESTNOST,STAV) values(?,?,?,?)";
        PreparedStatement pstmt = con.prepareStatement(INSERT_RECORD);

        Calendar calendar1 = Calendar.getInstance(TimeZone.getTimeZone("UTC"));       
        calendar1.setTimeInMillis(milli);
        Time Cas2 = (Time) calendar1.getTime();

        pstmt.setTime(1, Cas2);
        pstmt.setInt(2, DEN);
        pstmt.setString(3, MIESTNOST);
        pstmt.setString(4, STAV);
        pstmt.executeUpdate();

有什么建议吗?

5 个答案:

答案 0 :(得分:8)

java.sql.Time扩展java.util.Date,因此您无法简单地投射它。

您可以尝试这样的事情:

Time time = new Time(date.getTime());

答案 1 :(得分:5)

以下是我遇到类似问题时所做的事情。

java.util.Date utilDate = new java.util.Date("mm/dd/yyyy");
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());

将实际日期替换为“mm / dd / yyyy”

答案 2 :(得分:0)

calendar1.getTime()会返回Date个对象,TimeDate的子类,因此Date无法转换为Time }}。你可以试试这个:

Time Cas2 = new Time(calendar1.getTimeInMillis());

答案 3 :(得分:0)

public class Time extends java.util.Date

无法将Date投射到Time

您可以改用:

Time time = new Time(date.getTime())

答案 4 :(得分:0)

你可以试试这个。我没有测试过代码。

Time time = new Time(calendar.get(Calendar.MILLISECOND) 
            + calendar.get(Calendar.ZONE_OFFSET));

您可能需要减去区域偏移量。