【问题标题】:JOOQ Issue: AM/A.M. or PM/P.M. requiredJOOQ 问题:AM/A.M.或下午/下午必需的
【发布时间】:2017-01-06 13:53:16
【问题描述】:

我使用 JOOQ 3.4.1 作为中间件与 Oracle 数据库通信,但是当我在代码中编写以下查询时,我得到 SqlDataException: AM/A.M.或下午/下午需要。

select 0 prodid, cast(((cast('31-DEC-' as varchar2(4000)) || cast(YearForBilling as varchar2(4000))) || ' 12.59.00.000000000 PM ') as timestamp) theDate  0 Balance from ProductDetails where productRSN = 71 
group by YearForBilling

谁能帮我解决这个问题?

【问题讨论】:

    标签: java sql oracle jooq


    【解决方案1】:

    始终尽量避免使用本地日期时间格式

    我永远不会依赖依赖于区域设置的格式化日期和时间戳字符串。 从不。您永远不知道这些设置是否会在某个时间点发生变化,例如作为系统默认值,或作为会话设置等。不要依赖它。 不要

    如果可以,请使用绝对不依赖于您的 NLS 设置 (I've blogged about this here) 的 SQL 标准时间戳文字。例如:

    TIMESTAMP '2016-12-31 23:59:00.0'
    

    在您的情况下,您正在动态创建日期,因此时间戳文字不起作用。不过,请使用ISO 8601 date formatting, as such

    TO_TIMESTAMP(YearForBilling || '-12-31 23:59:00', 'YYYY-MM-DD HH24:MI:SS')
    

    TO_TIMESTAMP() function is described here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 2016-11-10
      相关资源
      最近更新 更多