JasperReports 没有将 postgresql 时间戳转换为简单日期
JasperReports not converting postgresql timestamp to simple date
我看到了 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类型。
<field name="action_on" class="java.sql.Timestamp">
我只想打印 22/08/15
或 22/08/2015
之类的日期,不想打印时间,所以当我尝试转换或使用 action_on::date
时,我得到 22/08/15 12:00 AM
打印时间 always 12:00 AM。更让我困惑的是,当我在我的终端上尝试这个命令时,它没有给我时间,只有未格式化的日期!
有解决办法吗?
编辑
我将 <field name="action_on" class="java.sql.Timestamp">
更改为 <field name="action_on" class="java.lang.String">
并且得到了日期 2015-08-22
!
现在有办法格式化吗?
我自己解决了这个问题,所以我发布了我的问题解决方案。显然欢迎更好的解决方案!
我将字段类型转换为字符串,即对问题执行 EDIT
。要格式化日期,您现在可以使用
<![CDATA[select sl_no,to_char(action_on,'dd-MM-yyyy') as my_date from action_history]]>
不要忘记用 my_date
!
替换字段声明中每个 following 声明或使用 action_on
的实例
另一个解决方案是 在查询中不格式化 (但在输出时格式化)使用 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,该列将正确填充日期对象(因此 excel 的用户可以在日期对象上 filter/sort/format)。
我看到了 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类型。
<field name="action_on" class="java.sql.Timestamp">
我只想打印 22/08/15
或 22/08/2015
之类的日期,不想打印时间,所以当我尝试转换或使用 action_on::date
时,我得到 22/08/15 12:00 AM
打印时间 always 12:00 AM。更让我困惑的是,当我在我的终端上尝试这个命令时,它没有给我时间,只有未格式化的日期!
有解决办法吗?
编辑
我将 <field name="action_on" class="java.sql.Timestamp">
更改为 <field name="action_on" class="java.lang.String">
并且得到了日期 2015-08-22
!
现在有办法格式化吗?
我自己解决了这个问题,所以我发布了我的问题解决方案。显然欢迎更好的解决方案!
我将字段类型转换为字符串,即对问题执行 EDIT
。要格式化日期,您现在可以使用
<![CDATA[select sl_no,to_char(action_on,'dd-MM-yyyy') as my_date from action_history]]>
不要忘记用 my_date
!
action_on
的实例
另一个解决方案是 在查询中不格式化 (但在输出时格式化)使用 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,该列将正确填充日期对象(因此 excel 的用户可以在日期对象上 filter/sort/format)。