在SQL中显示当前日期的年份和月份

时间:2013-07-25 01:12:18

标签: sql oracle

我的表格中有一个日期列,格式为'01 -JAN-99'。我需要显示当前日期,使用sysdate和表格中的日期之间的差异。但我必须按年和月显示它。因此,如果日期是148个月前,那么它将显示12年和4个月。

3 个答案:

答案 0 :(得分:3)

假设该列实际上是DATE(没有格式)而不是表示日期(具有格式)的VARCHAR2,您可能需要像

TRUNC( months_between( sysdate, date_column )/ 12 ) || ' Years and ' ||
TRUNC( MOD( months_between( sysdate, date_column ), 12 ) || ' Months.'

这假设如果差异是您想要忽略小数量的小数月份。如果您要舍入到最近的月份,请在计算月数时将TRUNC替换为ROUND

答案 1 :(得分:0)

试试这个脚本:

SELECT TRUNC (MONTHS_BETWEEN (sysdate, date_col) / 12) || ' YEARS '
       || MOD (TRUNC (MONTHS_BETWEEN (sysdate, date_col)), 12) || ' MONTHS '
       || (TO_DATE (sysdate) – ADD_MONTHS (date_col,TRUNC (MONTHS_BETWEEN (sysdate, date_col)))) || ' DAYS'
FROM DUAL;

答案 2 :(得分:-1)

这对我有用:

SELECT DATEDIFF(yy, '04/01/1999 00:00:00', GETDATE()) AS Years, DATEDIFF(m, '04/01/1999 00:00:00', GETDATE()) - (DATEDIFF(yy, '04/01/1999 00:00:00', GETDATE()) * 12) AS Months

理想情况下,日期('04 / 01/1999')将是一个列或参数,以避免重复。