我需要在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。
谢谢!
答案 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。这样,您不必更改实际查询;它将违背观点,从而以这种方式包括演员。