Sql 从历元中提取分和秒
我对从历元中提取时间(小时、分钟和秒)的方法感兴趣。例如:Sql 从历元中提取分和秒,sql,postgresql,Sql,Postgresql,我对从历元中提取时间(小时、分钟和秒)的方法感兴趣。例如: user_id | seconds ------------+------------ 53115 | 1461224491 53115 | 1461224492 53115 | 1461224493 53115 | 1461224494 53115 | 1461224495 53115 | 1461224496 53115 | 1461
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)
如果您使用的是MySQL,请使用:
SELECT DATE_FORMAT(FROM_UNIXTIME(1461224491), '%H:%i:%s');
有一个内置函数将Unixtime转换为时间戳。然后转换为时间以删除日期部分:
cast(to_timestamp(seconds) as time)
日期函数因不同的RDBMS而异,因此请阅读postgresql日期函数 我曾经为UNIX时间(自1970年1月1日00:00:00 GMT起的秒数)编写了一个存储过程,该存储过程始于1970年之前,即前一个闰日的第二天。我首先使用字符串作为整数数组(“31303130313031303131”),以4年为增量(4x365+1天),然后以年(365天)为增量,然后以3月到1月为增量,剩下几天(每年86400秒)是二月,剩下的是时间。我忘了如何调整时区,也忘了如何回到1968年3月1日00:00:00,这是留给学生的。在一个周期结束时有闰日意味着你可以忽略它们。如果二月还有29天,那就这样吧——没问题 地球变慢时增加的那些讨厌的秒数留给了天文钟迷们
幸运的是,从1970年到2099年,每4年都有一个闰日。要超过1901年到2099年,你需要担心mod 100不是leap而是mod 400是leap。他标记了
postgresql
,如果有一个合适的时间戳,那就容易多了。UNIX纪元“时间戳”不要考虑时区。但转换为适当的时间戳将是正确的。如果结果总是需要按发布的方式查看,则需要将上述内容调整为“选择(在时区“UTC-1”的时间戳(秒)::时间”