如何在Java中将系统更改号(SCN)转换为Date?

时间:2017-08-03 14:48:40

标签: java sql string oracle timestamp

在Oracle DB中,您可以使用

找到上次更新表的时间
SELECT SCN_TO_TIMESTAMP(MAX(ora_rowscn)) FROM myTable; 

see this question

我从此查询中获得01-AUG-17 05.29.54.000000000 PM

如果您执行此查询

SELECT MAX(ora_rowscn) FROM myTable;

您将获得系统更改号(SCN)格式的结果。我从此查询中获得268908318

在我的Java应用程序中,我想编写获取String并返回Date的函数。

这样的事情:

public Date getDateFromSCNString(String scnString) {...}

所以,我想用Java编写我的SCN_TO_TIMESTAMP函数。

我该怎么做?

更新:我想从SCN号码(268908318)获取日期。

2 个答案:

答案 0 :(得分:0)

您可以使用SimpleDateFormat在输入中设置所需的自定义格式,并按如下方式编写方法:

public Date getDateFromSCNString(String scnString) {
    DateFormat formatter = new SimpleDateFormat("dd-MMM-yy HH.mm.ss.SSS a", Locale.US);
    return formatter.parse(scnString);
}

这将正确地解析字符串到日期。

如果您使用输入"01-AUG-17 05.29.54.000000000 PM",该方法将返回以下日期:

Tue Aug 01 05:29:54 CEST 2017

答案 1 :(得分:0)

所以,感谢@Hugo,我们知道答案。由于它是内部oracle编号,因此无法将SCN编号(268908318)转换为Java中的Date。您只能通过查询数据库来执行此操作。