java找出下个月倒数第3天

本文详细介绍了一种使用Java进行日期操作和格式化的方法。通过Calendar类和SimpleDateFormat类,演示了如何获取当前日期时间、添加月份和减少天数,以及如何自定义日期显示格式。这对于需要处理和展示日期时间信息的Java应用程序非常实用。
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class TestDate2 {
	private static SimpleDateFormat sdf=new SimpleDateFormat("yyyy--MM-dd HH:mm:ss");

	public static void main(String[] args) {
		Calendar c=Calendar.getInstance();
		Date now=c.getTime();
		System.out.println("当前日期:"+format(c.getTime()));
		
		c.setTime(now);
		c.add(Calendar.MONTH, 2);//数字是几就加几个月
		c.add(Calendar.DATE, -5);//负数的话就是从今天开始算往前减多少天,可以跳到上一个月份
		System.out.println("下个月的当前日期:"+format(c.getTime()));

	}

	private static String format(Date time) {
		return sdf.format(time);
	
	}

}

### 查询各月倒数第3雇佣的员工信息 在 PLSQL 中查询各月倒数第3雇佣的员工信息,可以利用 Oracle 提供的日期函数 `LAST_DAY` 和 `ADD_MONTHS`,结合条件筛选实现。核心思路是:找出雇佣日期(`HIREDATE`)等于该月倒数第3的记录。 以下是一个完整的查询语句示例: ```sql SELECT * FROM emp WHERE TRUNC(hiredate) = TRUNC(LAST_DAY(hiredate) - 2); ``` #### 说明: - `LAST_DAY(hiredate)` 返回雇佣日期所在月份的最后一(例如 `1981-02-28`)。 - `LAST_DAY(hiredate) - 2` 表示倒数第3。 - `TRUNC(hiredate)` 去除时间部分,仅保留日期,用于精确匹配[^2]。 该查询适用于 `emp` 表中包含 `hiredate` 字段的场景,返回所有雇佣日期为各月倒数第3的员工信息。 --- ### 使用 `ADD_MONTHS` 的替代方案 如果需要更灵活地处理日期,例如动态计算某个月份的倒数第3,也可以使用如下方式: ```sql SELECT * FROM emp WHERE TRUNC(hiredate) = TRUNC(ADD_MONTHS(LAST_DAY(hiredate) + 1, -1) - 2); ``` - `ADD_MONTHS(LAST_DAY(hiredate) + 1, -1)` 表示获取下个月的第一,再减去一个月,等价于当前月的最后一。 - 此方式在处理跨月逻辑时更具通用性[^2]。 --- ### 示例数据验证 假设 `emp` 表中包含如下数据片段: | EMPNO | ENAME | HIREDATE | |-------|--------|-----------| | 7369 | SMITH | 1980-12-17| | 7499 | ALLEN | 1981-02-20| | 7566 | JONES | 1981-04-02| | 7876 | ADAMS | 1983-01-12| | 7900 | JAMES | 1981-12-29| ← 倒数第3(12月有31) 执行上述查询后,`JAMES` 的记录将被返回,因为其雇佣日期为 `1981-12-29`,正好是该月倒数第3。 --- ### 查询结果排序 若需进一步按部门或工资排序,可添加 `ORDER BY` 子句,例如: ```sql SELECT * FROM emp WHERE TRUNC(hiredate) = TRUNC(LAST_DAY(hiredate) - 2) ORDER BY deptno, sal DESC; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值