从epoch中提取分和秒

5lhxktic  于 2021-07-29  发布在  Java
关注(0)|答案(3)|浏览(252)

我对从epoch中提取时间(小时、分钟和秒)的方法很感兴趣。例如:

user_id     |  seconds   
------------+------------
      53115 | 1461224491
      53115 | 1461224492
      53115 | 1461224493
      53115 | 1461224494
      53115 | 1461224495
      53115 | 1461224496
      53115 | 1461224497
      53115 | 1461224498
      53115 | 1461224499
      53115 | 1461224500

对此:

user_id    |  seconds   |        login_time        
------------+------------+------------------------
      53115 | 1461224491 |  08:41:31
      53115 | 1461224492 |  08:41:32
      53115 | 1461224493 |  08:41:33
      53115 | 1461224494 |  08:41:34
      53115 | 1461224495 |  08:41:35
      53115 | 1461224496 |  08:41:36
      53115 | 1461224497 |  08:41:37
      53115 | 1461224498 |  08:41:38
      53115 | 1461224499 |  08:41:39
      53115 | 1461224500 |  08:41:40
(10 rows)
irlmq6kh

irlmq6kh1#

有一个内置函数可以将unixtime转换为timestamp。然后按时间转换以删除日期部分:

cast(to_timestamp(seconds) as time)
ndh0cuux

ndh0cuux2#

如果您使用的是mysql,请使用:

SELECT DATE_FORMAT(FROM_UNIXTIME(1461224491), '%H:%i:%s');
b4lqfgs4

b4lqfgs43#

日期函数在不同的rdbms中有所不同,因此请阅读postgresql日期函数。
我曾经为unix时间(自1970年1月1日00:00:00 gmt起的秒数)编写了一个存储过程,该时间在1970年之前开始,即前一个闰日的第二天。我首先取了4年的增量(4x365+1天),然后年(365天),然后月从三月到一月,使用字符串作为整数数组(“31303130313031303131”),所以剩下的日子(86400秒)是二月,剩下的是时间。我忘了如何调整时区,也忘了如何回到1968年3月1日00:00:00,有些事情留给了学生。在一个周期的末尾有闰日意味着你可以忽略它们。如果2月还有29天,那就这样吧——没问题!
当地球变慢的时候那些烦人的秒就留给天文钟迷了!
幸运的是,从1970年到2099年,每4年有一个闰日。要超过1901-2099年,你需要担心mod 100不是leap而是mod 400是leap。

相关问题