一、MySql 13位时间戳处理
FROM_UNIXTIME
TIMESTAMPDIFF
with t1 as (
SELECT
create_time as "原始时间戳",
FROM_UNIXTIME(create_time /1000) as "时间戳转正常时间格式",
FROM_UNIXTIME( create_time / 1000, '%Y-%m-%d' ) as "提取日期",
FROM_UNIXTIME(create_time /1000, '%H') as "提取小时",
lag(create_time,1) over ( ) as "原始时间戳向下偏移一行"
FROM
table)
SELECT
*,
TIMESTAMPDIFF(
SECOND,
FROM_UNIXTIME( `原始时间戳向下偏移一行` / 1000 ),
FROM_UNIXTIME( `原始时间戳` / 1000 )
) as "本行与上一行间隔时长(秒)"
FROM
t1
二、MySql date时间戳
DATE_FORMAT
TIMESTAMPDIFF
```c
with t1 as
(SELECT
time as "原始时间戳" ,
DATE_FORMAT( time, '%Y-%m-%d' ) as "提取日期",
DATE_FORMAT( time, '%H' ) as "提取小时",
lead(time,1) over () as "原始时间戳向上偏移一行"
FROM
table)
SELECT
*,
TIMESTAMPDIFF( SECOND, `原始时间戳向上偏移一行`, `原始时间戳` ) as "本行与下一行的间隔时长(秒)"
FROM
t1
三、PostgreSQL 13位时间戳处理
FROM_UNIXTIME
TIMESTAMPDIFF
with t1 as (
SELECT
time as "原始时间戳",
to_timestamp( time / 1000 ) AS "时间戳转正常时间格式方式1" ,
to_char(to_timestamp(time/1000),'yyyy-MM-dd HH24:MI:SS') AS "时间戳转正常时间格式方式2" ,
to_char(to_timestamp(time/1000),'yyyy-MM-dd') AS "提取日期方式1",
to_timestamp( time / 1000 )::date AS "提取日期方式2" ,
extract(hour from (to_timestamp(time /1000))) as "提取小时",
lead(update_time,1) over () as "原始时间戳向上偏移一行",
to_timestamp((lead(time,1) over (order by time asc ))/1000) as "戳向上偏移一行日期"
FROM
table
order by time asc
)
SELECT
*,
EXTRACT ( EPOCH FROM ( 戳向上偏移一行日期:: TIMESTAMP - "时间戳转正常时间格式方式2" :: TIMESTAMP ) ) AS "本行与下一行的时间间隔(秒)"
FROM
t1