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

值从MySQL时间到Java日期转换不正确

孟自强
2023-03-14

在我的MySQL数据库中,我有一个有三列的表,如下所示

id | name | notification_time
-----------------
1  | name1 | 00:30:00
2  | name2 | 01:30:00
3  | name3 | 01:00:00

notification_time是时间的数据类型。

在我的Spring-boot应用程序中,为表建模

@Entity
@Table(name = "table")
public class TableEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;

    @Column(name = "name")
    private String name;

    @Column(name = "notification_time")
    @Temporal(TemporalType.TIME)
    private Date notificationTime;
tableRepository.findAll();
19:30:00
20:30:00
20:00:00

共有1个答案

邓光赫
2023-03-14

发生的事情是,日期以UTC的形式存储到MSSQL中。这通常是可取的,因为当从多个区域运行应用程序实例时,如果LocalDateTime在一个时区是6点,在另一个时区是7点,在另一个时区是8点,您不希望在数据库中看到三个7点。如果您有理由更喜欢查看本地时间,那么您可以在Java中指定一个区域,从时间字段中减去本地时间和utc时间之间的小时差,或者在需要执行SELECT查询时转换数据库中的数据。

假设您知道您的本地时区是东美国,您可以在Java中执行以下操作:

timeNow.setHours(LocalDateTime.now().getHours() - ChronoUnit.HOURS.between(LocalDateTime.now(), LocalDateTime.now(ZoneOffset.UTC)));

或者SQL中类似的内容:

SELECT CONVERT(TIME, a_time AT TIME ZONE 'US Eastern Standard Time') FROM    
   schema.your_table;
 类似资料:
  • 问题内容: 如何将Unix时间戳中的时间转换为正常时间? 问题答案: 您的问题含糊不清。我将消除时区的歧义。 如何将Unix时间戳中的时间转换为正常时间? 我怀疑您是以某种方式从数据库而不是从中获取或一个值。在JDBC中,通常希望使用适当的方法来获取特定于DB的数据类型。可以获取MySQL 数据类型,从而为您提供,而后者又是的子类。 简而言之,应该执行以下操作: 要将其呈现给最终用户时,要以人类可

  • 问题内容: 有谁知道如何将JS dateTime转换为MySQL datetime?还有一种方法可以向JS日期时间添加特定的分钟数,然后将其传递给MySQL日期时间? 问题答案: 尽管JS确实拥有足够的基本工具来执行此操作,但它相当笨拙。

  • 问题内容: 我收到此错误: 无法将MySQL日期/时间值转换为System.DateTime 当我尝试从MySQL数据库中获取数据时。我的MySQL数据库中有 日期 数据类型。但是,当将其检索到我的数据表中时,它得到了上面的错误。 我怎样才能解决这个问题? 问题答案: 如果我用谷歌搜索“无法将MySQL日期/时间值转换为System.DateTime”,我会看到许多关于从Visual Studio

  • 我有一个日期时间,格式为2019年4月30日星期二16:00:00 0800,这是RFC 2822格式的日期 我需要将其转换为日期时间0800中的给定时区 如果我总结一下, 如何在Java中实现这一点?我已经尝试了下面的代码,但它给出的时间比当前时间短08小时,即

  • 问题内容: 我接收到来自Twitter的特定日期以特定格式发送的Twitter消息: 我想将这些日期存储在带有djangos DateTimeField字段的postgresql中的“带有时区的时间戳”字段中。但是,当我存储该字符串时,出现此错误: 我可以自动将twitter datetype转换为python datetime时间(在我的应用程序中的其他地方可以保存日期)。 问题答案: 编写这样

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