Oracle在不同月份的当天查找日期

时间:2013-06-21 17:36:46

标签: oracle function date loops range

我有一个问题,我想在一个表格中查找所有月份和日期的所有记录,例如

给定日期(mm / dd / yyyy):

'12/24/2010'

返回包含日期的所有记录:

'12/24/2010'
'11/24/2010'
'10/24/2010'
'09/24/2010'
'08/24/2010'
'07/24/2010'
'06/24/2010'
'05/24/2010'
'04/24/2010'
'03/24/2010'
'02/24/2010'
'01/24/2010'

有没有办法在单个查询中执行此操作? 我想在函数中实现它,但不想使用循环(仅用于速度)。 任何帮助将深表感谢!! :)

2 个答案:

答案 0 :(得分:3)

假设您的列全部定义为DATE,从功能上来说,您当然可以执行类似

的操作
SELECT *
  FROM my_table
 WHERE to_char( date_column, 'DD-YYYY' ) = to_char( date '2010-12-24', 'DD-YYYY' )

您可以在to_char( date_column, 'DD-YYYY' )上创建基于函数的索引,以提高查询效率。

答案 1 :(得分:-1)

尝试

SELECT date_column FROM some_table 
WHERE 
TO_DATE(date_column, 'MM') = TO_DATE(given_date, 'MM') 
AND 
TO_DATE(date_column, 'YYYY')) = TO_DATE(given_date, 'YYYY')

given_date是你的'12 / 24/2010'。