【问题标题】:How to convert db2 date format to H2 date format for in memory testing in java如何将 db2 日期格式转换为 H2 日期格式以在 java 中进行内存测试
【发布时间】:2016-12-26 19:51:32
【问题描述】:

我正在尝试将 DB2 数据库日期字段格式转换为内存数据库日期格式中的 H2,如下所示。它对我不起作用。 请帮忙。

select CREATE_DATE from PX.MY_DB2TABLE ;

这里数据库表中的 DB2 DATE 格式是 'MM/DD/YYYY'。 CREATE_DATE 是 db2 中的 DATE 数据类型。

H2 数据库仅接受 'yyyy-MM-dd' 格式。

在H2尝试了以下方式:

  select PARSEDATETIME(CREATE_DATE,'MM/dd/yyyy') FROM PX.MY_DB2TABLE;
    select PARSEDATETIME(CREATE_DATE,'yyyy-MM-dd') FROM PX.MY_DB2TABLE;

错误: 无法解析 DATE 常量

【问题讨论】:

  • 实际的DATE 类型没有格式。日期仅在输出为其他内容时才被格式化。您如何访问这两个数据库?如果您使用其中一个 java ORM 层管理器(即 JPA)或大多数可用的驱动程序,类型转换将为您管理;当查询从数据库返回时,您应该得到java.time.LocalDate(不过,旧驱动程序可能仅限于旧 javal.sql.X 类型)。

标签: java junit db2 h2 in-memory-database


【解决方案1】:

要从格式为 'YYYY-MM-DD' 的 DATE 数据类型值中获取字符串表示,在原始查询 [来自 OP] 中选择的 DATE 字段可以包装在 CHAR 转换标量中一个额外的参数,请求 Datetime to character 转换的特定日期格式;没有提到 DB2 的哪个变体,但这里有一些文档:DB2 for Linux UNIX and Windows 9.7.0->Database fundamentals->SQL->Functions->Scalar functions->CHAR:

select CHAR(CREATE_DATE, ISO) from PX.MY_DB2TABLE ;

对于第二个参数,请参阅 日期字符串 表 1. 日期字符串表示的格式 [将 LOCAL 想象为有效参数,代替所见的 LOC在]: DB2 for Linux UNIX and Windows 9.7.0->Database fundamentals->SQL->Language elements->Data types->Data type list->Datetime values

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 2016-12-02
    • 1970-01-01
    相关资源
    最近更新 更多