如何使用 Java 将列的时间戳(6)数据类型值从​​数据库提取到 csv 或在控制台上显示?

Posted

技术标签:

【中文标题】如何使用 Java 将列的时间戳(6)数据类型值从​​数据库提取到 csv 或在控制台上显示?【英文标题】:how to extract the timestamp(6) Datatype value of a column from a database to csv or display on console using Java? 【发布时间】:2017-06-29 10:42:39 【问题描述】:

我想使用 Java 从数据库中提取一列的 timestamp(6) 数据类型值。我无法在 reaultset 或 resultsetmetadata 中找到任何可以帮助我的方法。 当我在结果集中使用时间戳/时间/日期方法时,它正在改变格式。我想检索时间戳(6)的确切格式,例如:01-JAN-0001 02.30.32.001001 PM

如果有人能帮助我解决这个问题,我将不胜感激。

【问题讨论】:

时间戳没有格式 - 它在内部存储为一系列字节,每个字节代表年、月、日、小时、分钟、秒和小数秒部分的一部分。当您检索它时,您正在使用的用户界面将执行到人类可读格式的隐式转换(通常使用 NLS_TIMESTAMP_FORMAT 会话参数),但这不是存储在数据库中或传输到 Java 应用程序的内容。如果您希望它具有格式,则需要将其转换为字符串并指定其格式。 请显示您当前使用的代码,以及您想要实现的确切目标。 【参考方案1】:

我将使用 resultSet.getTimestamp() 获取值并将其转换为 Java 中的字符串,注意不要丢失单独存储的纳秒,但您始终可以将其转换为数据库中的字符串。以 Oracle 为例:

create table t1 (ts1 timestamp(6) default systimestamp);
insert into t1 select systimestamp from dual;
select to_char(ts1, 'YYYY-MM-DD HH24:MI:SS.SSSSSSS') from t1;

更改目标受众的日期格式。时间戳不是以某种格式存储的,它总是被转换的。只是你的数据库和 Java 对象有不同的默认值。

【讨论】:

但是 rs.getTimestamp(int columnIndex).toString() 将数据转换为 yyyy-mm-dd HH:mm:ss:s 格式。 @SanketChandak 然后不要使用Timestamp.toString(),据记录它返回一个非常具体的格式,如果你想要别的东西,那么你应该使用日期格式化程序(我建议你使用@ 987654324@ 并使用 java.time 包应用所需的格式。 或经典的 SimpleDateFormat。如果需要,请务必注意纳秒,因为默认情况下不会处理它们。

以上是关于如何使用 Java 将列的时间戳(6)数据类型值从​​数据库提取到 csv 或在控制台上显示?的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:如何将数据框列中的“时间戳”值从对象/字符串转换为时间戳?

SQL Server 2012 如何将列的数据类型从位更改为日期字段?

SQL Server:将列数据值从一个表复制到同一数据库中的另一个表

postgreSQL 将列数据类型更改为没有时区的时间戳

如何使mysql在每次修改行操作时自动将列更新为当前时间戳?

将列的数据类型从字符串转换为双精度