java - 如何正确使用setDate?

标签 java postgresql jdbc getdate

我有一个包含“日期”列的表格,并以以下格式输入日期:“2011-09-06” 我想执行查询:

select * from tvprograms where date=?

然后我试试这个:

Date startDate;
java.util.Date date;
Calendar cal = Calendar.getInstance();
cal.set(2011, 9, 1);
startDate = cal.getTime();
TVProgramDAO tvDAO = new TVProgramDAO();
tvDAO.findUnusedTvPrograms(new java.sql.Date(date.getTime()));

findUnusedTvPrograms 看起来:

public List<Integer> findUnusedTvPrograms(Date date) {
    List<Integer> results = new ArrayList<Integer>();
    if (obtainConnection()) {
        PreparedStatement stmt = null;
        ResultSet rs = null;
        ...
            stmt = con.prepareStatement(findOldTvProgQuery.toString());

            stmt.setDate(1, date);
            rs = stmt.executeQuery();

            while (rs.next()) {

                results.add(rs.getInt(1));
             ...
    return results;
}

但它不起作用。

最佳答案

据我所知,这段代码无法编译:

Date startDate;
java.util.Date date;
Calendar cal = Calendar.getInstance();
cal.set(2011, 9, 1);
startDate = cal.getTime();
TVProgramDAO tvDAO = new TVProgramDAO();
tvDAO.findUnusedTvPrograms(new java.sql.Date(date.getTime()));

您正在尝试使用 date 但您从未初始化该变量。这是一个稍微干净的版本:

Calendar cal = Calendar.getInstance();
cal.set(2011, 9, 1);
Date startDate = cal.getTime();
TVProgramDAO tvDAO = new TVProgramDAO();
tvDAO.findUnusedTvPrograms(new java.sql.Date(startDate.getTime()));

请注意,这将使用系统的默认时区,这可能不是一个好主意。我个人建议使用 Joda Time相反……

关于java - 如何正确使用setDate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7403454/

相关文章:

java - 如何使用ResetAbandonedTimer避免由于removeAbandonedTimeout而关闭连接

java - 不能在 DDL 语句中使用绑定(bind)变量。备择方案?

java - BASE64Encoder() 没有输出

java - 如何通过概率选择一个项目?

一天的 Eclipse BIRT 时间线(分钟)

sql - 如何根据一列的最大值在表中选择不同的数据?

java - 仅使用 Java5 的 XML 到 Java 对象(无外部库)

java - 如何使用正则表达式删除以空格结尾的每个字符串行中的换行符? java

ruby-on-rails - 如何从 hstore 列中获取二维散列作为输出?

java - mariadb 连接器 J Aurora 快速故障转移实现