timestamp = new Date();
然后将timestamp
变量持久化到timestamp
MySQL表列中。
然而,虽然通过调试,我看到date
对象显示在正确的时区GMT+1,但在数据库上持久化时,它是一个GMT时区,所以要追溯一个小时。
使用函数current_timestamp
返回一个GMT+1日期。
连接字符串为jdbc:mysql://.../db-name
,没有任何参数。
编辑:找到这段代码
preparedStatement.setTimestamp(2, new Timestamp(timestamp.getTime()));
myPreparedStatement
.setObject(
… , // Specify which placeholder `?` in your SQL statement.
OffsetDateTime.now( ZoneOffset.UTC ) // Capture the current moment as seen in the wall-clock time of UTC (an offset-from-UTC of zero).
) ;
您正在使用几年前被java.time类取代的糟糕的日期时间类。
不要使用日期
或时间戳
。
捕获当前时刻,用UTC表示。大多数数据库都以UTC形式存储片刻。通常,您应该用UTC完成大部分业务逻辑、调试、日志记录、存储和数据交换。
OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ) ;
若要将此时刻保存到数据类型类似于带有时区的SQL标准时间戳
的列中:
myPreparedStatement.setObject( … , odt ) ;
检索:
OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;
要向用户显示此检索到的时刻,您可能需要调整到用户的预期/期望时区。
ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
ZonedDateTime zdt = odt.atZoneSameInstant( z ) ;
那些转换方法主要使用instant
对象。instant
是以UTC表示的时刻,总是以UTC表示。您可以通过提取即时
将offsetdatetime
调整为UTC。instant
类是java.time中的基本构建块类,而offsetdatedate
具有更大的灵活性,例如在生成字符串时可以选择格式模式。但是instant
和offsetDateTime
都表示一个时刻,即时间线上的一个点。
Instant instant = odt.toInstant() ;
java.sql.Timestamp ts = org.threeten.bp.DateTimeUtils.toSqlTimestamp( instant ) ;
反过来,从数据库中检索时间戳
,然后立即转换为即时
。
java.sql.Timestamp ts = myResultSet.getTimestamp( … ) ;
Instant instant = org.threeten.bp.DateTimeUtils.toInstant( ts ) ;
Java.time框架内置在Java8和更高版本中。这些类取代了麻烦的旧的遗留日期时间类,如java.util.date
、Calendar
、&SimpleDateFormat
。
要了解更多信息,请参阅Oracle教程。并搜索堆栈溢出的许多例子和解释。规范是JSR310。
您可以直接与数据库交换java.time对象。使用符合JDBC4.2或更高版本的JDBC驱动程序。不需要字符串,也不需要java.sql.*
类。
从哪里获得java.time类?
问题内容: 在Java应用程序中,使用日期时间和时间戳的混合在MySQL数据库中添加和输入日期信息方面有什么好的折衷办法? 问题答案: 在Java方面,日期通常由(设计欠佳,但不包括在内)表示。它基本上是由支持大纪元时间中的味道long,也称为时间戳。它包含有关日期和时间部分的信息。在Java中,精度以毫秒为单位。 在SQL方面,有几个标准的日期和时间类型,DATE,TIME和TIMESTAMP(
我正在为我的聊天应用程序使用firebase。在聊天对象中,我使用方法添加时间戳。 请就这个问题提出解决办法
问题内容: 如何将Unix时间戳中的时间转换为正常时间? 问题答案: 您的问题含糊不清。我将消除时区的歧义。 如何将Unix时间戳中的时间转换为正常时间? 我怀疑您是以某种方式从数据库而不是从中获取或一个值。在JDBC中,通常希望使用适当的方法来获取特定于DB的数据类型。可以获取MySQL 数据类型,从而为您提供,而后者又是的子类。 简而言之,应该执行以下操作: 要将其呈现给最终用户时,要以人类可
问题内容: 我有一个数据库,它将具有标准sql格式的UMT时间戳。如何提取数据并为其设置Java日期对象? 据我所知mysql是 至于Java,日期/时间的东西一直躲着我。 如果有人为此知道一个好的图书馆,我欢迎您提出建议。 问题答案: 为什么不直接阅读为 看到
问题内容: 全部, 我有一个带有称为时间戳记的列的MYSQL表。它的数据类型为“ 10/1/2009 3:25:08 PM”,“ 10/1/2009 3:30:05 PM”,“ 10/4/2009 3:40:01 PM”,等等.. 我想编写一个SQL查询来选择在两个日期之间出现的时间戳字段中的所有值。 userInput日期将没有时间部分。您能为此建议正确的MySQL查询语法吗?谢谢 问题答案:
本文向大家介绍在MySQL中设置当前日期和时间作为时间戳,包括了在MySQL中设置当前日期和时间作为时间戳的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表。列之一设置为TIMESTAMP- 使用insert命令在表中插入一些记录。在这里,我们使用方法-将当前日期和时间设置为时间戳列- 使用select语句显示表中的所有记录- 这将产生以下输出-