Calendar和Data trunc和to_date 的用法

本文介绍了如何使用Java进行日期的增加操作,并详细解释了Oracle数据库中的trunc和to_date函数用法。通过实例展示了如何增加一天或一个月,以及如何使用trunc函数截断日期到特定格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 Calendar和Data

Date endDate = sdf.parse(selectData.getEndDate());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdfl = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String dataStr="2009-09-10 14:22:33";
Date now1 = sdf.parse(dataStr);

now1.setTime(now1.getTime()+60*60*24*1000);//多增加一天 //如果是增加一个月是增加30还是31呢?
System.out.println(now1+":\n"+now2+"\n"+new Date());

//增加一个月
Calendar cal1 = Calendar.getInstance();//2011-8-31
cal1.add(Calendar.MONTH,1); //2011-9-31 => 2011-10-1,对吗?
System.out.println("cal1"+cal1.getTime());   //显示 2011-9-30

二 trunc和 to_date

trunc 函数为指定元素 截断   sysdate 是oracle中取得当天的时间


trunc(date[,fmt]);  默认截取到日期 
今天是 2011-09-25
select trunc(sysdate) from dual;
select trunc(sysdate ,'dd') from dual ; -- 2011-9-25  --此时去除掉了后面的 时 分 秒

select trunc(sysdate ,'MM') from dual ; --2011-9-1

select trunc(sysdate ,'yyyy') from dual ; --2011-1-1



to_date
inputday 是 string   inputday='20110925' 或 inputday='2011-09-25'

表中日期>trunc(inputday,'YYYY') and 表中日期<to_date(inputday,'YYYY-mm-dd')

插入时间:
select t.*,t.rowid,to_date('2006/1/1 19:30:30','yyyy/MM/dd HH24:mi:ss') from
SELECT T1.CALENDAR_DATE,T1.STAGE_MOVE,T1.DMOVE,T1.NMOVE,L2.EOH,L2.ENG,L2.HOLD_QTY,L2.BANK FROM ((SELECT DM.CALENDAR_DATE FROM RPTDW.DAY_MASTER DM WHERE TRUNC(DM.CALENDAR_DATE,'MM') =TO_DATE('${monthID}'||'-01','YYYY-MM-DD')) T2 LEFT JOIN (SELECT TRUNC (T1.TRACK_OUT_TIME) TIME1, SUM(T1.TRACK_OUT_QTY) STAGE_MOVE, SUM(CASE WHEN T1.SHIFT_NUMBER=1 THEN T1.TRACK_OUT_QTY ELSE 0 END) DMOVE, SUM(CASE WHEN T1.SHIFT_NUMBER=2 THEN T1.TRACK_OUT_QTY ELSE 0 END) NMOVE FROM (SELECT L1.TRACK_OUT_TIME,L1.TRACK_OUT_QTY, CASE WHEN TO_CHAR (L1.TRACK_OUT_TIME,'HH24:MI:SS') >= '07:30:00' AND TO_CHAR (L1.TRACK_OUT_TIME,'HH24:MI:SS') < '19:30:00' THEN '1' ELSE '2' END AS SHIFT_NUMBER FROM (SELECT TRACK_OUT_TIME ,TRACK_OUT_QTY FROM RPTDW.LOT_STAGE_HISTORY) L1)T1 GROUP BY TRUNC(T1.TRACK_OUT_TIME))T1 ON T2.CALENDAR_DATE = T1.TIME1)T1 LEFT JOIN (SELECT TO_DATE (L1.run_time_date,'YYYY-MM-DD') CALENDAR_DATE,SUM (L1.component_qty)EOH, SUM (CASE WHEN L1.LOT_CATEGORY ='ENG' THEN L1.COMPONENT_QTY ELSE 0 END ) ENG, SUM (CASE WHEN L1.LOT_STATE IN ('hold','running hold') THEN L1.COMPONENT_QTY ELSE 0 END ) HOLD_QTY, SUM (CASE WHEN L1.LOT_STATE IN ('bank') THEN L1.COMPONENT_QTY ELSE 0 END ) BANK FROM (SELECT DISTINCT run_time_date,run_time_hour,RUN_TIMESTAMP,LOT_NAME,PRIORITY,INTERNAL_PRIORITY ,product_name,LOT_STATE,lot_type,lot_category,component_qty FROM RPTDW.LOT_MASTER_SNAPSHOT_HOUR) L1 WHERE L1.RUN_TIME_DATE <= TO_CHAR(TRUNC(SYSDATE),'YYYY-MM-DD') AND L1.run_time_hour = '07:30' GROUP BY TO_DATE (L1.RUN_TIME_DATE,'YYYY-MM-DD'))L2 ON T1.CALENDAR_DATE = L2.CALENDAR_DATE 代码报错:errMsg=Sql syntax error: invalid table alias,修改sql代码
06-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值