如何在SQL中计算日期差并仅保留整数天数?
提取日期间隔中的天数部分(Mode Analytics/PostgreSQL)
你遇到的这个问题很常见——当计算日期差得到完整的interval格式输出时,确实需要额外处理才能只保留天数部分。在Mode Analytics中,底层使用的是PostgreSQL,所以可以用以下两种方法轻松实现你的需求:
方法1:仅显示数字天数(如"3")
直接用EXTRACT(DAY FROM ...)函数从interval结果中提取天数数值:
SELECT EXTRACT(DAY FROM (date_trunc('day', timetable.time) - date_released)) AS no_days
这个函数会精准返回间隔中的整数天数,正好匹配你想要的纯数字格式。
方法2:显示"X days"格式(如"3 days")
如果希望保留"days"后缀,用字符串拼接就能实现:
SELECT CONCAT( EXTRACT(DAY FROM (date_trunc('day', timetable.time) - date_released)), ' days' ) AS no_days
或者用FORMAT函数让代码更易读:
SELECT FORMAT('%s days', EXTRACT(DAY FROM (date_trunc('day', timetable.time) - date_released))) AS no_days
补充说明
因为你已经通过date_trunc('day', timetable.time)把时间截断到了当天的起始时刻,所以两个时间相减得到的interval里的天数部分就是纯粹的整数日期差,不会有月份、年份或者时分秒的干扰,完全契合你的需求。
内容的提问来源于stack exchange,提问作者Data Learner
相关产品推荐
相关产品推荐

