You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL中实现类似Excel的日期小数差值计算?

让PostgreSQL日期差计算结果与Excel一致的方法

PostgreSQL中to_date()函数返回的是DATE类型,仅包含年月日信息,两个DATE类型相减得到的是整数天数;而Excel的日期计算默认包含时间维度(未指定时间时默认取当天00:00:00),当计算涉及时间占比时会返回带小数的结果(小数部分代表一天的占比,比如0.8635约等于20.72小时)。

要让PostgreSQL输出和Excel一致的带小数的天数结果,需要按以下方式调整查询:

  1. 将日期转换为包含时间的TIMESTAMP类型,可以用to_timestamp()函数直接转换,或者给日期字符串追加时间部分。
  2. 计算两个TIMESTAMP的差值得到时间间隔,再将间隔转换为以天为单位的数值(包含小数)。

示例查询

替换原查询为:

SELECT EXTRACT(EPOCH FROM (to_timestamp('10042025','mmddyyyy') - to_timestamp('1977-09-27','yyyy-mm-dd'))) / 86400;

如果Excel中实际的结束时间包含具体时分秒(比如2025-10-04 20:43:36,对应0.8635天),可以直接指定时间来精确匹配:

SELECT EXTRACT(EPOCH FROM (timestamp '2025-10-04 20:43:36' - timestamp '1977-09-27 00:00:00')) / 86400;

逻辑说明

  • EXTRACT(EPOCH FROM interval):将时间间隔转换为总秒数
  • 除以86400(24小时×60分钟×60秒):把秒数转换为以天为单位的数值,小数部分对应一天中的时间占比,与Excel的计算逻辑完全对齐。

内容的提问来源于stack exchange,提问作者user1463065

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 06:33:21