我正在尝试查询DB2数据库,并使用 Java 将DATEIME
列映射到Date
,但出现此错误:
DB2 SQL错误:SQLCODE = -181,SQLSTATE = 22007,SQLERRMC = null,DRIVER = 4.21.29
简短说明:DATETIME值的字符串表示形式为 日期时间值C无效
日期时间的字符串表示形式不在可接受的范围内 或格式不正确。日期时间值的正确范围 如下:表2. datetime值的范围Datetime数值 范围年0001至9999月1至12天4月,6月,9月, 11月(第4、6、9、11个月)1月30日至2月(第2个月)1至28(跨越 1至29年级)1月,3月,5月,7月,8月,10月,12月 (月1、3、5、7、8、10、12)1到31小时0到24(如果小时为24, 时间值的其他部分为零。如果小时为美国,则最大小时为 12.)分钟0到59秒0到59微秒0到999999系统操作:无法执行该语句。程序员回应:检查 该值是否在有效范围内以及是否在适当范围内 格式。有关以下信息,请参阅《 DB2 SQL参考》的第二章。 字符串数据格式。
首先,我将LocalDate转换为Date
public static Date convertLocalDateToDate(LocalDate date) {
return Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant());
}
第二,我正在使用规范API
public static Specification<MyEntity> dataUse(Date dataUse){
return (root, query, builder) -> builder.equal(root.get("myDate"), dataUse);
}
我在Entity中的字段映射为
@Column(name="DT_EX_MOVI_IN")
@Temporal(TemporalType.DATE)
private Date myDate;
最后,当我尝试执行查询时
repository.findAll(query);
我收到错误错误DB2 SQL Error: SQLCODE=-181, SQLSTATE=22007, SQLERRMC=null, DRIVER=4.21.29
有人可以帮助我吗?
谢谢
答案 0 :(得分:0)
我解决了我的问题。我阅读了DB2 https://www.ibm.com/support/knowledgecenter/en/SSEPEK_10.0.0/java/src/tpc/imjcc_rjvjdata.html
的文档我的解决方案是使用java.sql.Date映射我的对象。
非常感谢所有尝试帮助我的人!