比较Derby中的时间戳和日期

时间:2012-06-13 15:02:36

标签: derby

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

  

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

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

谢谢!

2 个答案:

答案 0 :(得分:0)

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

查看文档http://docs.oracle.com/javase/7/docs/api/java/util/Date.html

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

答案 1 :(得分:-1)

也许您可以在其中一个表上定义VIEW,并在VIEW中包含CAST。这样,您不必更改实际查询;它将违背观点,从而以这种方式包括演员。