【问题标题】:JasperReports not converting postgresql timestamp to simple dateJasperReports 未将 postgresql 时间戳转换为简单日期
【发布时间】:2016-03-25 23:47:03
【问题描述】:

我看到this 问题与我的问题相似,但是解决方法仍然给我一个错误。

我的 .jrxml 文件中有一个这样的 sql 查询字符串

<queryString>
        <![CDATA[select sl_no,cast(action_on as date) from action_history]]>
</queryString> 

我正在使用 Eclipse 插件 JasperStudio 来设计模板,并在我的数据库中使用 PostgreSql。现在这个查询正在按预期正确获取数据。

我的 action_on 是 java.sql.Timestamp 类型。
&lt;field name="action_on" class="java.sql.Timestamp"&gt;
我只希望打印像 22/08/1522/08/2015 这样的日期并且不希望打印时间,所以当我尝试投射或使用 action_on::date 时,我得到 22/08/15 12:00 AM 打印时间 总是 12:00 AM。更让我困惑的是,当我在终端上尝试这个命令时,它没有给我时间,只有未格式化的日期!
有解决办法吗?

编辑
我将&lt;field name="action_on" class="java.sql.Timestamp"&gt; 更改为&lt;field name="action_on" class="java.lang.String"&gt;,我得到了日期2015-08-22! 现在有办法格式化吗?

【问题讨论】:

    标签: jasper-reports date-parsing


    【解决方案1】:

    我自己解决了,所以我将我的解决方案发布到我的问题上。更好的解决方案显然是受欢迎的!

    我将字段类型转换为字符串,即对问题做了EDIT。要格式化日期,您现在可以使用
    &lt;![CDATA[select sl_no,to_char(action_on,'dd-MM-yyyy') as my_date from action_history]]&gt;
    不要忘记将在您的字段声明中声明或使用 action_on 的每个以下实例替换为 my_date

    【讨论】:

    • 谢谢,对我帮助很大。
    【解决方案2】:

    另一种解决方案是使用textField 标签上的pattern 属性在查询中不格式化(但在输出时格式化)

    <textField pattern="dd-MM-yyyy">
        <reportElement x="0" y="o" width="100" height="20"uuid="b8baea82-84c4-42fa-bccd-62abc96eeded"/>
        <textElement verticalAlignment="Middle"/>
        <textFieldExpression><![CDATA[$F{action_on}]]></textFieldExpression>
    </textField>
    

    主要的优势是,如果您导出到例如,该列将正确填充日期对象(因此excel用户可以过滤/对日期对象进行排序/格式化)。

    【讨论】:

    • 接受优势部分的答案!谢谢:D
    猜你喜欢
    • 2021-04-07
    • 1970-01-01
    • 2019-07-23
    • 2020-01-16
    • 2014-02-25
    • 2023-03-28
    • 2016-11-26
    • 1970-01-01
    • 2011-04-09
    相关资源
    最近更新 更多