【问题标题】:How to extract hour from unix timestamp?如何从unix时间戳中提取小时?
【发布时间】:2019-06-10 03:07:15
【问题描述】:

我正在使用 Spring JPA。并且需要从 begin_time BIGINT 字段中提取小时。值看起来像这样

1547654400000    
1547568000000
1547654400000   

这是我尝试过的

 @Query("select extract(hour from (s.beginTime/1000)) from TestTable s") 
 public List<Integer> testQuery() { 
 // implementation 
 }  

但它总是返回 null。

Java 有一个方法 System.currentTimeMillis() 。因此,spring JPA 中必须有一种方法可以从 unix 时间戳中提取小时。

如何从 unix 时间戳中提取小时

【问题讨论】:

  • 你能添加使用testQuery方法的类的完整代码吗?
  • 这不是您发布的 JPQL,因此无论如何它都不起作用(除非您在其他地方设置了一些秘密 nativeQuery 标志)

标签: java mysql spring spring-data-jpa jpql


【解决方案1】:

HOUR(FROM_UNIXTIME(1547654400000/1000)) --> 8

  1. 除以 1000 以从毫秒到“unixtime”。
  2. 转换为时间格式。
  3. 提取您需要的部分。 (这也可以通过MID() 或其他字符串操作来完成。)

注意:这将获得与任何时区相关联的“小时”值。

也许这就是你想要的:

另一方面,FLOOR(1547654400000/(1000*3600))%24 为您提供 16,即值中的“小时”。

这样想:除以“小时”(毫秒和秒/小时)下面的部分,然后取模每天的小时数 (24)。

【讨论】:

    【解决方案2】:

    如果 beginTime 是 unix 时间戳,你试试extract(hour from FROM_UNIXTIME(s.last_login) ), 希望能帮到你。

    【讨论】:

      猜你喜欢
      • 2015-12-31
      • 2012-12-09
      • 2020-12-16
      • 2020-07-07
      • 2014-11-07
      • 1970-01-01
      • 2013-07-02
      • 2012-08-05
      • 1970-01-01
      相关资源
      最近更新 更多