使用 jdbc 向 hsqldb 输入日期

input date using jdbc to hsqldb

如何获取结束日期大于当前日期的所有行?我必须使用 setString() 还是 setDate()?他们都没有工作! 正确的做法是什么? 结果集为空,但数据库包含给定 sql 语句

的数据
public ArrayList<AddBean> listPendingTasks() {
java.util.Date date = new java.util.Date();
String modifiedDate= new SimpleDateFormat("yyyy-MM-dd").format(date);
Connection con = JDBCHelper.getConnection();
PreparedStatement ps_sel = null;
ArrayList<AddBean> c = new ArrayList<AddBean>();
ResultSet rs = null;
try {
    ps_sel = con.prepareStatement("select * from tasks where enddate > ? order by enddate");
    ps_sel.setString(2, modifiedDate);
    ps_sel.execute();
    rs = ps_sel.getResultSet();
    while(rs.next())
    {
        AddBean ab = new AddBean();
        ab.setTname(rs.getString(2));
        ab.setCategory(rs.getString(3));
        ab.setStartdate(rs.getString(4));
        ab.setEnddate(rs.getString(5));
        ab.setDescription(rs.getString(6));
        ab.setPriority(rs.getString(7));
        c.add(ab);
    }

    return c;
} catch (SQLException e) {
    e.printStackTrace();
    return null;
}

试试这个

如果您的 table 有 DATE 类型的列:

Query : SELECT * FROM [values] v WHERE date >= '2013-06-03';

那就用这个方法java.sql.Date.valueOf(java.lang.String)

ps.setDate(2, java.sql.Date.valueOf("2015-09-13"));

更新为 Date and Time Types

DATE 类型用于具有日期部分但没有时间部分的值。 MySQL 以 'YYYY-MM-DD' 格式检索和显示 DATE 值。支持的范围是 '1000-01-01' to '9999-12-31'。 MySQL 以 'HH:MM:SS' 格式检索和显示 TIME 值。 TIME 值的范围可能是 '-838:59:59' to '838:59:59'.

String QUERY = "UPDATE TABLE_NAME SET dateValue=?, timeValue=?, timeStampText=? WHERE rowIdentify=?";
PreparedStatement pstmt = con.prepareStatement( QUERY );
    pstmt.setDate(1, java.sql.Date.valueOf( localDate )); // DATE Type
    pstmt.setTime(2, java.sql.Time.valueOf( localTime )); // TIME Type
    pstmt.setString(3, localDateTime ); // TEXT Type
    pstmt.setString(4, conditionValue );

获取上述日期字段值的示例代码。 getDateFromEpochTime()

long startTime=System.currentTimeMillis();
String str = getDateFromEpochTime(startTime);
CharSequence charSequence = str.subSequence(0, str.length());
String pattern = "yyyy-MM-dd HH:mm:ss";
DateTimeFormatter dateTimeFormatter = java.time.format.DateTimeFormatter.ofPattern( pattern );
LocalDate localDate = java.time.LocalDate.parse( charSequence, dateTimeFormatter );
LocalTime localTime = java.time.LocalTime.parse( charSequence, dateTimeFormatter );
LocalDateTime localDateTime = LocalDateTime.parse( charSequence, dateTimeFormatter);

Java SQL driver doesnot support java.sql.Timestamp for DATETIME or TIMESTAMP type of Table column. Try to use PreparedStatement when query contains Date and Time Types types.

了解数据库的日期格式。 hsql 数据库支持 'yyyy-mm-dd'。如果您使用的是准备好的语句,那么您可以将日期输入为字符串或日期。那不会有什么不同。我推荐使用字符串。使用日期对于初学者来说有点复杂,因为它不是实用日期。它的 sql 日期。日期格式有时会很麻烦。