我有以下oql查询在Visualvm上针对堆转储运行,并希望将creationTime
字段格式化为日期时间字段(其存储为Long
)。
select { id: s.id.toString(), createdAt: new Date(s.creationTime) }
from org.apache.catalina.session.StandardSession s
上述查询列出了以下输出(剪裁)
{
id = 1010827848,
createdAt = sun.org.mozilla.javascript.internal.NativeDate@66106135
}
...
很明显,它已被“转换”为日期,但不会将其显示为人类可读的格式。在日期对象上执行toString()
只会导致该字段显示为无效日期
。
BE27C51E8BF185A2FB3AA9164EC0C647
)。这可能会发生什么?
createdAt: newjava.util.Date(s.creationTime)
id
的字段存在已知问题。有关更多详细信息,请参阅通过VisualVM OQL查询检索“id”字段值。作为解决方法,您可以使用的["包装对象"]. getValueOfField("id")
而不是s.id.toString()
通过上述更改,您的查询应该是:
select { id: s["wrapped-object"].getValueOfField("id"),
createdAt: new java.util.Date(s.creationTime).toString() }
from org.apache.catalina.session.StandardSession s