使用FormatDate的排序行为不正确

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用FormatDate的排序行为不正确相关的知识,希望对你有一定的参考价值。

我正在使用SAP Business Objects BI4编辑一个Webi报表。

我有一个带有表格的报表,其中显示的日期格式如下。

=FormatDate([Sales Date];"dd-MMM-yyyy")

最初,销售日期维度的格式是 "mmddyyyy"。

我想通过这个格式化的日期维度按升序排列我的表,所以我只需选择我的表>右键单击>选择排序,然后我选择=FormatDate([Sales Date]; "dd-MMM-yyy")按升序排列。

我的问题是,排序行为不正确,因为结果如下。

Sales Date
----------
01-AUG-2006
----------
01-JUL-2010
----------
02-FEB-2006
----------
03-AUG-2005

如上图所示,排序似乎只按 "日 "的值进行,完全忽略了 "月 "和 "年"。

我的对象在宇宙中正确定义为 "Date"。

而且当我不使用格式化 "dd-MMM-yyy "而保持销售日期的原始格式时,排序也能正确完成。

有什么建议吗?

答案

返回的数据类型 FormatDate 是一个字符串。这就是为什么排序会失序的原因,因为它会对字符串值而不是日期值进行排序。

你有两个选择。

  1. 使用(自定义)日期格式来格式化日期(在 格式化 部分,当您将文档放在 编辑 模式)。) 你需要使用RIA(Java小程序)来定义你自己的自定义日期格式。或者你也可以使用其中一种可用的格式。这将不会改变数据类型,而只是改变显示方式,因此排序应该没有问题。

Formatting

  1. 如果您仍然想使用RIA(Java小程序)来定义您自己的日期格式。FormatDate 选项,您可以添加 [Sales Date] 在第二列中,使用它对数据进行排序,然后隐藏该列。

以上是关于使用FormatDate的排序行为不正确的主要内容,如果未能解决你的问题,请参考以下文章

插入排序函数行为怪异 C++

scala优先级队列没有正确排序?

JSTL - 使用带有 java.sql.Timestamp 的 formatDate

在 WatchOS 中使用列表时滚动行为不正确

RichTextBox 使用私有字体时行为不正确

在材料ui的日期选择器中更改formatDate