Как извлечь час из метки времени Unix? - PullRequest
0 голосов
/ 16 января 2019

Я использую Spring JPA. И нужно извлечь час из begin_time BIGINT поля. Значения выглядят так

1547654400000    
1547568000000
1547654400000   

Вот что я попробовал

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

Но он всегда возвращает ноль.

В Java есть метод System.currentTimeMillis (). Поэтому в пружине JPA должен быть метод для извлечения часа из метки времени Unix.

Как извлечь час из метки времени Unix

Ответы [ 2 ]

0 голосов
/ 18 января 2019

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

  1. Разделите на 1000, чтобы получить от миллисекунд до "unixtime".
  2. Преобразовать в формат времени.
  3. Извлеките ту часть, которая вам нужна. (Это может быть сделано с помощью MID() или других манипуляций со строками.)

Осторожно: в значение будет добавлен «час», связанный с любым часовым поясом.

Возможно, это то, что вы хотели:

FLOOR(1547654400000/(1000*3600))%24, с другой стороны, дает 16, «час», который находится в значении.

Подумайте об этом следующим образом: разделите на части ниже «часа» (миллисекунды и секунды в час), а затем по модулю количество часов в день (24).

0 голосов
/ 16 января 2019

, если beginTime является меткой времени Unix, вы пытаетесь extract(hour from FROM_UNIXTIME(s.last_login) ), надеюсь, что смогу помочь тебе.

...