Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “如何修复无法解析的问题”;日期“;H2数据库中的常量问题?_Java_Sql_Jdbc_H2 - Fatal编程技术网

Java “如何修复无法解析的问题”;日期“;H2数据库中的常量问题?

Java “如何修复无法解析的问题”;日期“;H2数据库中的常量问题?,java,sql,jdbc,h2,Java,Sql,Jdbc,H2,我正在将为Windows开发的Java应用程序移植到AIX Unix。在Windows上,它使用SQL Server进行配置。在AIX上,我们尝试使用H2数据库。大多数代码都可以工作,但我在执行具有日期时间条件的查询时遇到以下错误 此SQL在SQL server上运行良好,但在H2DB上出现上述异常。如何解决这个问题?我需要查询日期和时间。尝试使用ISO日期文字: WHERE EM_SCHEDULER_DAILY_POLL.DATE_TIME >= '2019-06-26' AND

我正在将为Windows开发的Java应用程序移植到AIX Unix。在Windows上,它使用SQL Server进行配置。在AIX上,我们尝试使用H2数据库。大多数代码都可以工作,但我在执行具有日期时间条件的查询时遇到以下错误


此SQL在SQL server上运行良好,但在H2DB上出现上述异常。如何解决这个问题?我需要查询日期和时间。

尝试使用ISO日期文字:

WHERE
    EM_SCHEDULER_DAILY_POLL.DATE_TIME >= '2019-06-26' AND
    EM_SCHEDULER_DAILY_POLL.DATE_TIME < '2019-06-27'

作为另一个评论,我给出的第一个版本(带有两个不等式)是可搜索的,这意味着数据库应该能够在
DATE\u TIME
列上使用索引,而第二个版本(使用cast-to-DATE)可能无法使用索引。因此,如果您需要调整或优化数据库,第一个版本是首选方法。

您正在传递一个带有时间的值,但只有H2日期没有时间。 去掉第二个常数中的时间

'26-Jun-2019 23:59:59' --> '26-Jun-2019'
日期日期数据类型。格式为yyyy-MM-dd

映射到java.sql.Date,时间设置为00:00:00(或下一个 如果给定日期和日期的午夜不存在,可能的时间 由于夏令时更改而导致的时区)。java.time.LocalDate也是 Java 8及更高版本支持

例如:

日期

来源:

由于您只需要一天(至少在该示例中),您可以简单地使用:

DATE_TIME = '26-Jun-2019'
请注意,关于ISO也应检查,此格式不是用于日期功能的最佳格式

示例-截止日期('2019年12月1日','dd-MM-yyyy')


在学生(Id、姓名、DOB)值中插入(1,‘Abc’,截止日期('01-12-2019','dd-MM-yyyy'))

H2日期没有时间,如
26-Jun-2019 23:59:59
,因此无效。你需要去掉
之间的
,使用
日期\u时间=2019年6月26日
(因为你只想要那个日期)。我尝试了这个方法,效果很好,但我真的需要时间组件。我使用RazorSQL自动移植了数据库。我应该使用时间戳列而不是日期吗?我对H2很陌生,因此对它的数据类型不太熟悉。@Ram您不需要时间组件,因为您的
WHERE
子句逻辑表示您只想匹配单个日期
26-六月-2019
。如果您有其他未提及的逻辑要求,那么可能会编辑您的问题并将其显示出来。我现在看到了错误。我想在数据库数据类型上存在细微的差异。感谢您的帮助。请注意,
BETWEEN
包含表达式的两端。因此,如果可行的话,请使用
=“2019年6月26日”
'26-Jun-2019 23:59:59' --> '26-Jun-2019'
DATE_TIME = '26-Jun-2019'