例如,给定日期是 04/04/1924 ,我想知道1924年2月的最后一天。
我提出了add_month,但如果我从数据源获得不同的月份,它似乎不灵活
有什么好主意吗?
答案 0 :(得分:37)
Oracle有一个last_day()
函数:
SELECT LAST_DAY(to_date('04/04/1924','MM/DD/YYYY')) from dual;
SELECT LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM/DD/YYYY'), -1)) from dual;
SELECT LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM/DD/YYYY'), -2)) from dual;
结果:
April, 30 1924 00:00:00+0000
March, 31 1924 00:00:00+0000
February, 29 1924 00:00:00+0000
在您的日期使用Add_Months()
获取相应的月份,然后应用last_day()
。
答案 1 :(得分:3)
查询inpl sql以获取该月的第一天和最后一天:
第一天:
select to_date(to_char(LAST_DAY(sysdate),'YYYYMM'),'YYYYMM') from dual;
最后一天:
select LAST_DAY(to_date(to_char((sysdate),'YYYYMM'),'YYYYMM')) from dual;
答案 2 :(得分:0)
这将显示一个月的最后一天
SELECT Max(LAST_DAY(ADD_MONTHS(SYSDATE, -2)) + level)
FROM dual
CONNECT BY
level <= LAST_DAY(ADD_MONTHS(SYSDATE, -1)) - LAST_DAY(ADD_MONTHS(SYSDATE, -2))
你可以用to_date('04 / 04/1924','MM-DD-YYYY')替换你想要的任何日期的系统日期
SELECT Max(LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM-DD-YYYY'), -2)) + level)
FROM dual
CONNECT BY
level <= LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM-DD-YYYY'), -1)) - LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM-DD-YYYY'), -2))
或只是
select LAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM-DD-YYYY'), -2)) from dual;
答案 3 :(得分:0)
获取所选月份和年份的最后一天:
SELECT TO_CHAR(LAST_DAY(TO_DATE(:X_THE_MONTH ||'/ 01 /'||:X_THE_YEAR,'MM / DD / YYYY')),'dd')FROM DUAL
答案 4 :(得分:0)
如果您想知道您的日期是否为最终装载
SELECT
case when
TO_DATE('19240430','YYYYMMDD') = LAST_DAY(TO_DATE('04/04/1924','MM/DD/YYYY'))
THEN 1 ELSE 0 END LAST_MOUNTH_DAY FROM DUAL
答案 5 :(得分:0)
获取本月的第一个和最后一个日期 只需更改月份数字即可获得该月的第一个和最后一个日期
select
to_date('01/'|| '07/' || to_char(sysdate, 'YYYY'), 'dd/mm/yyyy') first,
last_day(to_date('01/'|| '07/' || to_char(sysdate, 'YYYY'), 'dd/mm/yyyy')) last
from dual
结果:
first last
--------------------------
01/02/2017 28/02/2017
答案 6 :(得分:0)
简单的方法是:
select first_name , last_day(hire_date) from employees;
我正在使用HR模式...您可以获取所提到月份的最后一天。