2

我需要比较 SELECT 查询中的日期和时间戳。通常,大多数其他 DB 平台(MySQL、MSSQL、Oracle 等)都支持此功能,但在 Derby 中会引发此错误:

原因:java.sql.SQLSyntaxErrorException:不支持“DATE”和“TIMESTAMP”之间的比较。类型必须具有可比性。字符串类型也必须有匹配的排序规则。如果排序规则不匹配,一个可能的解决方案是将操作数强制转换为默认排序规则(例如 SELECT tablename FROM sys.systables WHERE CAST(tablename AS VARCHAR(128)) = 'T1')

我不想使用 CAST,因为我无法更改 SQL 查询。这是来自 Derby 的错误,会在某个时候得到修复吗?我目前正在使用 Derby 10.8.2.2。

谢谢!

4

2 回答 2

0

如果您从 Java 程序连接,您可以使用各种 getxxx() 方法获取时间戳的特定部分(这些实际上是从 Java.util.date 继承的)

请参阅文档http://docs.oracle.com/javase/7/docs/api/java/util/Date.html

并检查 getDate(), getDay() getHour().... 方法

于 2012-08-16T09:27:18.860 回答
-1

Perhaps you can define a VIEW on one of the tables, and include the CAST in the VIEW. That way, you don't have to change the actual query; it will go against the view, and thus include the cast in that way.

于 2012-06-14T01:17:15.843 回答