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

Oracle SQL如何计算两个日期间的年月并格式化输出

双日期间隔年数+月数格式输出SQL解法

现有查询问题说明

你当前使用的查询是将月份差直接除以12取小数,仅能得到带小数位的总年数,无法拆分出独立的年数和剩余月数,需要先提取整数间隔总月数再拆分计算。

Oracle数据库解法(适配MONTHS_BETWEEN函数场景)

  1. 先用TRUNC(MONTHS_BETWEEN(lease_end_date, lease_start_date))获取两个日期之间的整数间隔总月数
  2. 总月数整除12得到完整年数,总月数对12取余得到剩余月数
  3. 拼接为要求的输出格式
    完整查询语句:
SELECT 
  CONCAT(
    FLOOR(TRUNC(MONTHS_BETWEEN(lease_end_date, lease_start_date)) / 12),
    'year ',
    MOD(TRUNC(MONTHS_BETWEEN(lease_end_date, lease_start_date)), 12),
    'months'
  ) AS Duration
FROM lease_header;

MySQL数据库解法

MySQL可直接用TIMESTAMPDIFF函数获取整数间隔月数,计算逻辑一致:

SELECT 
  CONCAT(
    FLOOR(TIMESTAMPDIFF(MONTH, lease_start_date, lease_end_date) / 12),
    'year ',
    MOD(TIMESTAMPDIFF(MONTH, lease_start_date, lease_end_date), 12),
    'months'
  ) AS Duration
FROM lease_header;

补充说明

如果业务需要对不足1个月的时长做进位处理,将上述语句中的TRUNC替换为ROUND即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:54:06