我将 Hyperion Reporting Studio 与 Oracle 和 DB2 数据库一起使用。我们的字段上有一个开放日期和一个结束日期,因此开放或结束日期字段的格式自然是 6/02/16 06:18:05 PM。有没有办法修剪日期部分,只留下时间戳?我已经尝试过 TURNC 以及自定义 SQL,但没有任何效果。我知道我可以使用 =TIME 公式在 excel 中做到这一点。我可以在查询或结果中添加计算项目,我只是不确定该怎么做。
2 回答
也许正确使用to_char?
SQL> select to_char(sysdate,'dd-Mon-yyyy hh24:mi:ss') full_date,
2 to_char(sysdate,'yyyy-mm-dd') date_only,
3 to_char(sysdate,'hh24:mi:ss') time_only
4 from dual;
FULL_DATE DATE_ONLY TIME_ONL
-------------------- ---------- --------
03-Jun-2016 16:30:38 2016-06-03 16:30:38
有关 Oracle 中日期/时间格式的更完整说明,请参阅http://edstevensdba.com/oracle-data-types/understanding-oracle-date-formats/
一种方法是更改数据类型。这不是正确的方法,并且根据您正在做的事情可能是不明智的,但它会为格式化省去很多麻烦。
要更改数据类型:在查询部分,在请求行的字段中,转到属性(可以双击,或右键单击并选择属性)。这将向您显示该列/字段的 SQL。在右侧,将有一个按钮选项。它所做的只是揭示数据类型。这通常是 Hyperion 基于底层数据源的最佳猜测。将其更改为时间并再次处理。这将更改每个子部分对该字段的所有后续使用:基于该查询部分的结果、数据透视等。
另一种方法是改变数字格式。如果您只关心化妆品,并且只希望它适用于该部分,则可以使用此方法。在部分 (Results/Pivot/etc) 中,右键单击列,然后选择 Number。然后,选择适合您的时间格式。
另一种方式,如果您确实需要删除日期进行计算,您可以将其转换为字符串,从字符串中删除日期,然后将其转换回时间。在结果部分,右键单击,添加计算项,然后执行类似的操作
var objField = YOUR_DATETIME_COLUMN;
var strField = ToChar(objField);
var numFirstspace = strField.indexOf(' ');
var strTime = strField.substring(numFirstspace);
var tmTime = ToDate(strTime);
tmTime
假设我猜对了,它仍然会显示类似01/01/1904 HH:mm AM/PM
...的内容,因此您仍然必须右键单击该列,选择数字,然后将数字格式更改为您的时间。
另一种方法是在查询的请求行中添加计算项。这需要与上一个版本相同,但使用 SQL 语法而不是 Hyperion 的 Javascript 版本。