如何在oracle DB中检查某个日期是否在当前日历月中

Man*_*lka 3 sql oracle date

我需要打印当前日历月作为注册月份的记录.

我用sysdate这个功能.但是,我不确定这是否正确.

我的代码是,

select * from student where sysdate,trunc('mm') = enrolled_month;
Run Code Online (Sandbox Code Playgroud)

我只需要一些方法来使用sysdate函数打印当前月份.

任何形式的帮助将不胜感激.

提前致谢.

Gor*_*aca 6

我相信你需要的EXTRACT功能:

select * 
  from student 
 where enrolled_month = extract(month from sysdate);
Run Code Online (Sandbox Code Playgroud)


Tim*_*sen 5

这是另一个使用选项TO_CHAR:

SELECT *
FROM student
WHERE TO_CHAR(sysdate, 'Month') = enrolled_month;
Run Code Online (Sandbox Code Playgroud)

但我认为将注册月份名称(可能还有其他组件)与注册日期分开存储并不是一个好主意.只需存储一次日期,然后使用Oracle的日期函数来处理该数据.


小智 5

您可以使用

SELECT TO_CHAR(SYSDATE, 'MON') FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

要么

SELECT TO_CHAR(SYSDATE, 'MM') FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

要么

SELECT EXTRACT(MONTH FROM SYSDATE) FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

但是,如果您的学生表包含超过一年的数据,您可能还需要考虑年份.