java - 使用 Java 在 Postgresql 中输入日期值

标签 java postgresql date jdbc

我正在尝试使用 java 和 PostgreSQL 编写数据库应用程序。我有一些日期数据类型的行。但是我不能用这段代码向数据库中添加任何条目:

Date aDate = null;
aDate.setYear(1990);
aDate.setDate(01);
aDate.setMonth(05);

preparedStatement prep = connection.prepareStatement("insert 
into exampletable values (?,?);");
prep.setDate(1, (java.sql.Date) aDate);
prep.setDate(2, (java.sql.Date) aDate);

我如何在 java 查询的 postgreSQL 行中添加日期?

最佳答案

不清楚这是否是您唯一的问题,但这段代码几乎可以肯定不是您想要的:

Date aDate = null;
aDate.setYear(1990);
aDate.setDate(01);
aDate.setMonth(05);
  • 它会抛出一个 NullPointerException 因为你正试图取消引用 null
  • 然后您尝试将年份设置为公元 3890 年(java.util.Date 是基于 1900 年的年份)
  • 然后您将月份设置为 6 月。如果您认为您将月份设置为五月,请再想一想 - Date 是从 0 开始的月份
  • 您正在使用的所有方法均已弃用 - 这应该为您敲响警钟
  • 然后您尝试将 aDate 转换为 java.sql.Date 但没有迹象表明它是 java .sql.日期

我建议:

  • 要么使用Joda Time作为更好的日期/时间 API,或 java.util.Calendar
  • 确保在设置值之前实际创建了一个实例
  • 稍后可能会创建一个新的 java.sql.Date

例如:

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 1990);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.MONTH, 4); // Assuming you wanted May 1st

java.sql.Date date = new java.sql.Date(calendar.getTime().getTime());

// Ideally specify the columns here as well...
PreparedStatement prep = connection.prepareStatement(
    "insert into exampletable values (?,?)");
prep.setDate(1, date);
prep.setDate(2, date);

关于java - 使用 Java 在 Postgresql 中输入日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7662617/

相关文章:

sql - 无法在 ubuntu 的 postgresql 中创建数据库

java - 日期格式和分配

python - 如何使用 python datetime 确定给定日期 2017-08-23 之前的一年?

java - eclipse无法导入javax怎么解决?

sql - 使用 SQL 获取加倍的数字计数?

java - RxJava 中的 Pull 实现

ruby-on-rails - 如何使用 postgres 按小时或 15 分钟分组

php - 如何在mysql中获取字符串作为日期?

java - 如何从 Map<String,Map<Date,Statistics>> 向 Vaadin 表添加行?

java - 使用实体多对多定义的 Hibernate HQL 投影问题