oracle将日期与当前日期进行比较

时间:2017-12-05 12:18:56

标签: sql oracle

我必须将列转换为日期,然后将列的月份与当前月份进行比较。

该列如下所示:

Date
0117
0217
0317
..

我知道如何转换它,但无法比较它。

select  date,to_date(date, 'mmyy')
from table
where ????

任何想法?

2 个答案:

答案 0 :(得分:0)

您可以使用to_date()

将值转换为日期
select to_date(mmyy, 'MMYY')
from t;

请注意,我重命名了列mmyy以澄清它包含的内容。

这将返回该月的第一天。

然后可以将to_date()的结果与当前日期进行比较。例如,要匹配该月的第一天:

where to_date(mmyy, 'MMYY') = trunc(sysdate)

如果您想匹配当月的所有内容,只需使用适当的比较:

where to_char(to_date(mmyy, 'MMYY'), 'YYYY-MM') = to_char(sysdate, 'YYYY-MM')

或更简单地说:

 where mmyy = to_char(sysdate, 'MMYY')

答案 1 :(得分:0)

您可以将当前日期转换为字符串并使用字符串比较(这将允许您在列上使用索引):

SELECT *
FROM   your_table
WHERE  your_date_column = TO_CHAR( SYSDATE, 'MMYY' )

或者您可以将列转换为日期并进行比较(不会使用列上的索引但可以使用基于函数的索引,如果您创建了一个):

SELECT *
FROM   your_table
WHERE  TO_DATE( your_date_column, 'MMYY' ) = TRUNC( SYSDATE, 'MM' )