【问题标题】:input date using jdbc to hsqldb使用 jdbc 向 hsqldb 输入日期
【发布时间】:2015-12-09 08:26:29
【问题描述】:

如何获取 endDate 大于当前日期的所有行?我必须使用 setString() 还是 setDate()?他们都没有工作!!! 正确的方法是什么? ResultSet 为空,但数据库包含给定 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;
}

【问题讨论】:

    标签: jdbc hsqldb resultset sql-date-functions


    【解决方案1】:

    试试这个

    如果您的表有一个 DATE 类型的列:

    Query : SELECT * FROM [values] v WHERE date &gt;= '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 驱动程序不支持java.sql.Timestamp 用于DATETIME or TIMESTAMP 类型的表列。当查询包含Date and Time Types 类型时,尝试使用PreparedStatement

    【讨论】:

    • 谢谢你:) 帮助
    【解决方案2】:

    了解数据库的日期格式。 hsql db 支持'yyyy-mm-dd'。如果您使用准备好的语句,则可以将日期输入为字符串或日期。这不会有所作为。我建议使用字符串。使用日期对于初学者来说有点复杂,因为它不是 util date。它的sql日期。日期格式有时会很麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-21
      • 2015-06-09
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 2011-12-31
      相关资源
      最近更新 更多