SQL如何计算两个日期字段的差值?统计用户首末次交易间隔的方法
你可以直接在现有统计SQL的基础上新增日期差计算字段即可,不同数据库的日期差计算函数存在差异,以下是主流数据库的实现方案,计算结果默认单位为天:
MySQL / MariaDB 实现
使用DATEDIFF函数,参数顺序为「结束日期, 开始日期」,完整SQL如下:
select user_id, min(created_at) as first_date, max(created_at) as new_date, DATEDIFF(max(created_at), min(created_at)) as date_diff from amazon_transactions group by user_id;
PostgreSQL 实现
日期类型可以直接相减得到天数差,完整SQL如下:
select user_id, min(created_at) as first_date, max(created_at) as new_date, (max(created_at)::date - min(created_at)::date) as date_diff from amazon_transactions group by user_id;
SQL Server 实现
使用DATEDIFF函数,第一个参数指定差值单位为day,完整SQL如下:
select user_id, min(created_at) as first_date, max(created_at) as new_date, DATEDIFF(day, min(created_at), max(created_at)) as date_diff from amazon_transactions group by user_id;
Oracle 实现
日期类型去除时间部分后直接相减得到天数差,完整SQL如下:
select user_id, min(created_at) as first_date, max(created_at) as new_date, TRUNC(max(created_at)) - TRUNC(min(created_at)) as date_diff from amazon_transactions group by user_id;
如果需要计算小时、月、年等其他单位的差值,调整对应函数的单位参数即可。
内容的提问来源于stack exchange,提问作者Muhammad Syazwan
相关产品推荐
相关产品推荐

