当前位置: 首页 > 知识库问答 >
问题:

Java时间戳转换错误,Mysql 8.26转换不正确

董康平
2023-03-14

我试图使用字符串到时间戳的转换,从一般情况下提取对象向量。在本例中,mysql值的格式如下:“2022-06-29 10:08:22”,但当我打印字符串时,它的格式如下:“2022-06-29T10:08:22”。这里,我们注意到输出包括一个“T”字符。当我尝试使用时间戳进行转换时,我得到了一个错误。

代码:

data = new Object[0][0];   
data[0][0]=rs.getObject(0);    TimeStamp
createTimestampt= Timestamp.valueOf((String)data[0][0]));

在本例中,是一个过时的java类。sql。时间戳?。或者我错在哪里?

注意:Ojbect rs是java.sql.ResultSet的一个实例。出于明显的原因,没有包含所有代码。但是讨论了问题的本质。

谢谢你

谢谢

共有1个答案

茅星雨
2023-03-14

你忘了提到你列的数据类型。所以我不能告诉你使用哪一个。

要么:

OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;

…或:

LocalDateTime ldt = myResultSet.getObject( … , LocalDateTime.class ) ;

切勿使用旧类的时间戳。多年前,它被现代爪哇取代。时间类。具体来说,替换为即时和偏移日期时间。

JDBC 4.2及更高版本要求JDBC驱动程序支持java。时间类。

假设您正在访问的数据类型类似于SQL标准类型TIMESTAMP AND TIMZONE的列,请检索OffsetDateTime

OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;

正在写入数据库。

myPreparedStatement.setObject( … , odt ) ;

如果要访问的数据库列的类型类似于SQL标准类型的时间戳(不带时区),请使用LocalDateTime类。

你说:

MySQL值的格式如下:"2022-06-29 10:08:22"

不,不准确。日期时间类型的数据库列不是文本,因此没有格式。

您所看到的是根据该列中表示的值生成的文本。

如果您按照上述指示检索OffsetDateTime,则不涉及任何文本。

您可以从OffsetDateTime对象生成文本。

  • 对于标准ISO 8601格式,调用toString
  • 对于本地化格式,使用DateTimeFormatter.ofLocalizedDateTime
  • 对于自定义格式,请使用DateTimeFormatter.of模式

所有这些文本生成方法已经在堆栈溢出中多次介绍过。搜索以了解更多信息。

你说:

这里,我们注意到输出包括一个“T”字符。

ISO 8601标准定义了带有T的格式。

 类似资料:
  • 我找不到这个问题的解决方案,我正在从firebase获取数据,其中一个字段是时间戳,看起来像这样- Swift示例(作品): 我的飞镖尝试: 并且它返回的日期/时间是错误的。 更新:

  • 下面的代码给出了2021年8月6日星期五12:16:27 GMT-0700(太平洋夏时制)的值,而不是mm/dd/yyyy hh:mm:ss。我在这里漏掉了什么?请告知

  • 本教程的重点是将来自 Yahoo finance API 的日期转换为 Matplotlib 可理解的日期。 为了实现它,我们要写一个新的函数,bytespdate2num。 def bytespdate2num(fmt, encoding='utf-8'): strconverter = mdates.strpdate2num(fmt) def bytesconverter(b)

  • 从我的数据库我检索值为: 我想要上面的: 我试着用当前的时间戳跟踪 实际时间戳:2018年6月22日星期五16:07:35 更新了,我不想更新,有没有办法保持原样?

  • 然而,我想知道你如何将它转换成没有GMT或年份的时间和日期,例如Sat 04月03日14:00:00,这就是它 我的Add.java 我的配置文件.java 这里的任何帮助都将得到极大的理解。