Java处理数据库的日期

时间:2014-09-13 14:24:52

标签: java date jdbc insert

我有一个日期,我想以dd / mm / yyyy格式插入我的数据库(2014年12月25日)

我的代码接受一个Booking对象,其日期为其中一个字段。 我的代码在" Date currentDate = sd.parse(book.GetActualCheckInDate())中抛出错误;陈述说:

找不到适合于解析的方法(java.util.Date) 方法java.text.SimpleDateFormat.parse(java.lang.String,java.text.ParsePosition)不适用(实际和形式参数列表的长度不同) 方法java.text.DateFormat.parse(java.lang.String)不适用(实际参数java.util.Date不能通过方法调用转换转换为java.lang.String)

public int InsertBooking(Booking book) throws SQLException
    {
    int retCode = 2;
    try
    {
        SimpleDateFormat sd = new SimpleDateFormat("dd/mm/yyyy");
        Date currentDate = sd.parse(book.GetActualCheckInDate());
        java.sql.Date sqlDate = new java.sql.Date(currentDate.getTime());

        Connection conn = DriverManager.getConnection("jdbc:derby://localhost:1527/HotelDatabase");
        Statement stmt = conn.createStatement();

        String insertStatements = ("INSERT INTO BOOKING " +
                "(BOOKINGID, ACTUALCHECKINDATE)" +
                "VALUES " + "(" + book.GetBookingID() + "," + "'" + sqlDate + "'" + ")"); 
     }

2 个答案:

答案 0 :(得分:2)

我看到的第一个问题是SimpleDateFormat中的模式。在dd/mm/yyyy mm 表示分钟。请改用dd/MM/yyyy

第二件事是,您是否尝试将字符串传递给DB上的Date字段。让JDBC完成工作,使用PreparedStatements解析为正确的数据库格式。

答案 1 :(得分:1)

book.GetActualCheckInDate()返回什么? 它必须是有效的日期格式化字符串。因为parse方法是将字符串格式的日期转换为Date Formate中的日期。

相反,如果您希望将Date转换为指定格式的日期字符串,则必须使用SimpleDateFormat的格式方法。查看以下解决方案

import java.util.Date;
import java.text.SimpleDateFormat;

public class DateChecker {
    public static void main(String[] args) {
        try {
            String someDate = "22/03/1991";
            SimpleDateFormat strToDate = new SimpleDateFormat("dd/MM/yyyy");
            Date currentDate = strToDate.parse(someDate);
            System.out.println("Date is :  " + currentDate);

            String dateFormat = "yyyy-MM-dd HH:mm:ss.SSS";
            SimpleDateFormat dateToStr = new SimpleDateFormat(dateFormat);
            String formattedDate = dateToStr.format(currentDate);
            System.out.println("Formated Date is : " + formattedDate);

        } catch (Exception ex) {
            System.out.println("Exception is : " + ex.getMessage());
        }

    }
}