JAVAsql。Java 8和Java 6中的日期比较
我知道一个java。sql。日期应将小时、分钟、秒和毫秒设置为零,以符合标准SQL日期的定义。这是有文档记录的here(在Java8中也是如此)
我还知道Oracle DATE type确实有这些年、月、日、小时、分钟和秒的时间域。但没有分数秒,也没有时区
我注意到Java 6和Java 8中的相同查询的行为不一样:
private static final String REQUETE_LISTE_CALENDRIER_DATE =
" SELECT ID_DATE, JOUR" +
" FROM CALENDRIER " +
" WHERE ID_DATE = ? ";
绑定到^{
GregorianCalendar gregorianCalendar = new GregorianCalendar(); // "now"
java.sql.Date dateCourante = new java.sql.Date(gregorianCalendar.getTime().getTime()); // date AND time of "now"
- 使用Java 6,我找到了一个值
- 对于Java8,我没有李>
在我的数据库中,日期有小时、分、秒差零。我们可以通过以下查询进行检查:
select to_char(id_date, 'DD/MM/YYYY HH24:MI:SS')
from calendrier
where id_date = to_date('26/08/2016', 'DD/MM/YYYY');
这就产生了:
26/08/2016 00:00:00
我的理解是:
我还没有找到关于这种行为的文件
有人能证实或解释吗
作为一种解决方法,我使用这个,如here所述: dDate=java。sql。日期valueOf(dDate.toLocalDate());//其中dDate是java。sql。日期
# 1 楼答案
JavaSE8还为其他一些常见用例提供了类
YearMonth
还有^{} 类,它包含一个月和一天。用于表示生日
MonthDay
^{} 类涵盖信用卡开始日期和到期日期用例,以及人们没有指定日期的场景
JDBC 4.2
JavaSE8中的JDBC将支持这些新类型,但不会有公开的JDBCAPI更改。现有的通用setObject和getObject方法就足够了