SQL实战系列一:时间转化和时间计算

发布于:2023-09-14 ⋅ 阅读:(108) ⋅ 点赞:(0)


一、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

该处使用的url网络请求的数据。

三、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

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到