【问题标题】:comparing timestamp and date in Derby比较 Derby 中的时间戳和日期
【发布时间】:2012-06-13 15:02:36
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: derby


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-18
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-27
        相关资源
        最近更新 更多