将Joda LocalTime转换为java.sql.Date
要进行JDBC查询,我需要向它传递日期。日期保存在PostgreSql数据库的日期
字段类型中,该字段类型表示没有时间的特定日期。
由于我只需要日期,我决定使用特定的对象,它只表示没有时间的日期,这是Joda-Time包中的LocalDate
。我认为这很重要,因为如果我使用DateTime对象,它将携带冗余的时间数据,并且当时钟倒退一小时时,它可能会导致夏令时结束时的错误(尽管这种情况非常罕见,但这并非不可能)。
但是,当我开始尝试用公认的方法参数来平方对象时,我没有找到一种合适的方法来做到这一点。LocalDate
preparedStatement.setDate
setDate
接受为参数。构造对象的唯一选择是以毫秒为单位传递它的时间。java.sql.Date
java.sql.Date
但这违背了使用Joda-Time软件包的所有目的,因为在此转换中,我们返回到毫秒,并且当这些转换发生时,时钟可能会放回一小时并将日期更改为以前的日期。LocalDate
所以,现在我的代码中有这一行:
preparedStatement.setDate(1, new java.sql.Date(localDate.toDate().getTime()));
但这是转换为格式接受的最佳方法吗?LocalDate
setDate
我对夏令时和相应时钟偏移的担忧是否合理?
有没有更好的方法将日期(并且只有没有时间的日期)传递给JDBC准备的声明?