oracle 获取时间段问题
两个字段a,b,格式都是yyyy-mm-dd,现在我要获取时间段并判断其是否小于一年,如何写?
追问:是的,计算间隔时间并判断是否小于一年
两个字段a,b,格式都是yyyy-mm-dd,现在我要获取时间段并判断其是否小于一年,如何写?
追问:是的,计算间隔时间并判断是否小于一年
答案:这个最好转换一下思路,
假设a小于b,
你要判断其是否小于一年
可以转换成a的一年后是否小于b
即:add_months(a,12)-b 是否大于零,这个就不用考虑闰年了,=0就是整一年
SELECT a,add_months(a,12),b,add_months(a,12)-b FROM
(
SELECT to_date('2008-2-29','yyyy-mm-dd') a,to_date('2009-2-28','yyyy-mm-dd') b FROM dual
)
--WHERE add_months(a,12)-b <0;
其他:没明白,是要计算这两个日期的间隔时间吗? where a-b>365 如果不判断 闰年的话.
时间段并判断其是否小于一年
首先把 a, b 的数据, 由字符类型, 转换为 日期类型。
然后 用 日期相减, 取 绝对值得方式, 判断 结果是否小于 365
ABS( TO_DATE(a, 'YYYY-MM-DD') - TO_DATE(b, 'YYYY-MM-DD') ) < 365 select abs(trunc(a) - trunc(b)) as 间隔天数,
case when abs(months_between(a, b)) <= 12 then '小于一年'
else '大于一年'
end as 是否小于一年
from 表
上一个:怎么判断一个网站它用的是什么数据库? oracle,mysql,sql server,access,这个要怎么判断
下一个:做实验用,关于Oracle VM VirtualBox增加一块磁盘