PostgreSQL time类型最大值设为24:00:00而非23:59:59的原因咨询
PostgreSQL中time类型最大值设为24:00:00的原因
- 遵循SQL标准:SQL规范里明确允许
time类型使用24:00:00来标记一天的结束,这个值等价于次日的00:00:00,PostgreSQL是按照标准来实现的。 - 解决精度边界问题:如果把最大值设为
23:59:59,当处理毫秒、微秒级别的高精度时间时,23:59:59.999...这类值就会超出范围,而24:00:00能完美对应一天的终点,不管精度多高都不会有歧义。 - 简化时间转换逻辑:当把
time和date组合成timestamp时,24:00:00可以直接转换为次日的零点,这个逻辑很直观,不用额外处理接近午夜的临界值。 - 贴合业务直观认知:很多业务场景需要明确标记"当天截止",比如账单结算、活动截止时间,用
24:00:00比23:59:59更符合普通人的时间认知,避免用户产生"差一秒就到第二天"的困惑。
内容的提问来源于stack exchange,提问作者mystackoverflowpseudo
相关产品推荐
相关产品推荐

