我必须将列转换为日期,然后将列的月份与当前月份进行比较。
该列如下所示:
Date
0117
0217
0317
..
我知道如何转换它,但无法比较它。
select date,to_date(date, 'mmyy')
from table
where ????
任何想法?
答案 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' )