oracle字符串连接和时间格式处理(附加Calendar简单使用)

来源:互联网 发布:大数据的统计学基础炼 编辑:程序博客网 时间:2024/06/08 05:08

1.<span style="background-color: rgb(248, 248, 248); ">和其他数据库系统类似,</span><a target=_blank href="http://database.51cto.com/art/201010/231973.htm" style="text-indent: 28px; background-color: rgb(248, 248, 248); ">Oracle</a><span style="text-indent: 28px; background-color: rgb(248, 248, 248); ">字符串连接使用“||”进行字符串拼接,其使用方式和MSSQLServer中的加号“+”一样。</span>

2.oracle对对时间格式的数据存贮比较特殊,经常报ora-01861文字与格式字符串不匹配错误,只需在时间类型字段前加to_char进行转换:


3.Calendar在程序开发中使用还是很广泛的,下面只粘贴曾经使用过程序的Calendar应用:

(1)获取本周和上一周:startDate(上一周),endDate(本周)

Calendar cal1 = Calendar.getInstance();cal1.setTime(new Date());Calendar cal2 = Calendar.getInstance();cal2.setTime(new Date());int weekday1 = cal1.get(Calendar.DAY_OF_WEEK) - 1;cal1.add(Calendar.DATE, -weekday1-7*i);int weekday2 = cal2.get(Calendar.DAY_OF_WEEK) - 1;cal2.add(Calendar.DATE, 7-weekday2-7*i);startDate=sdf.format(cal1.getTime());endDate=sdf.format(cal2.getTime());


(2)

package com.vingsoft.dzjc.chart;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class cc {private static SimpleDateFormat bigLongSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSSS");    private static SimpleDateFormat hourSdf = new SimpleDateFormat("HH");    private static SimpleDateFormat minutesSdf = new SimpleDateFormat("mm");    private static SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd");    private static SimpleDateFormat longHourSdf = new SimpleDateFormat("yyyy-MM-dd HH");    private static SimpleDateFormat longSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    private static SimpleDateFormat sdfCh = new SimpleDateFormat("yyyy年MM月dd日");    public static void main(String[] args) throws ParseException {// Calendar c = Calendar.getInstance();//        int currentMonth = c.get(Calendar.MONTH) + 1;//        if (currentMonth >= 1 && currentMonth <= 3)//            c.set(Calendar.MONTH, 0);//        else if (currentMonth >= 4 && currentMonth <= 6)//            c.set(Calendar.MONTH, 3);//        else if (currentMonth >= 7 && currentMonth <= 9)//            c.set(Calendar.MONTH, 4);//        else if (currentMonth >= 10 && currentMonth <= 12)//            c.set(Calendar.MONTH, 9);//        c.set(Calendar.DATE, 1);//        //        System.out.println(shortSdf.format(c.getTime()));for(int i=0;i<2;i++){Calendar cal = Calendar.getInstance();cal.setTime(new Date());int weekday = cal.get(Calendar.DAY_OF_WEEK) - 1;System.out.println(-weekday-7*i+"    "+i+"    "+weekday);//cal.add(Calendar.DATE, -weekday-7*i);cal.add(Calendar.DATE, 7 - weekday-7*i);                 System.out.println(shortSdf.format(cal.getTime()));        }         Calendar c = Calendar.getInstance();         c.add(Calendar.WEEK_OF_YEAR, -1);         SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");//         System.out.println("上周的今天为:" + sf.format(c.getTime()));                  String date=sdfCh.format(new Date());         System.out.println("**********  "+date);         System.out.println("**********  "+date.substring(5,11));}}

(3)

package com.vingsoft.dzjc.chart;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class DateUtilCan {private static SimpleDateFormat bigLongSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSSS");    private static SimpleDateFormat hourSdf = new SimpleDateFormat("HH");    private static SimpleDateFormat minutesSdf = new SimpleDateFormat("mm");    private static SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd");    private static SimpleDateFormat longHourSdf = new SimpleDateFormat("yyyy-MM-dd HH");    private static SimpleDateFormat longSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /**     * 获得本周的第一天,即周日     *     * @return     */    public static Date getCurrentWeekDayStartTime() {        Calendar c = Calendar.getInstance();        try {            int weekday = c.get(Calendar.DAY_OF_WEEK) - 1;            c.add(Calendar.DATE, -weekday);            c.setTime(longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00"));        } catch (Exception e) {            e.printStackTrace();        }        return c.getTime();    }    /**     * 获得本周的最后一天,即本周六     *     * @return     */    public static Date getCurrentWeekDayEndTime() {        Calendar c = Calendar.getInstance();        try {            int weekday = c.get(Calendar.DAY_OF_WEEK);            c.add(Calendar.DATE, 7 - weekday);            c.setTime(longSdf.parse(shortSdf.format(c.getTime()) + " 23:59:59"));        } catch (Exception e) {            e.printStackTrace();        }        return c.getTime();    }    /**     * 获得本天的开始时间,即2012-01-01 00:00:00     *     * @return     */    public static Date getCurrentDayStartTime() {        Date now = new Date();        try {            now = shortSdf.parse(shortSdf.format(now));        } catch (Exception e) {            e.printStackTrace();        }        return now;    }    /**     * 获得本天的结束时间,即2012-01-01 23:59:59     *     * @return     */    public static Date getCurrentDayEndTime() {        Date now = new Date();        try {            now = longSdf.parse(shortSdf.format(now) + " 23:59:59");        } catch (Exception e) {            e.printStackTrace();        }        return now;    }    /**     * 获得本小时的开始时间,即2012-01-01 23:59:59     *     * @return     */    public static Date getCurrentHourStartTime() {        Date now = new Date();        try {            now = longHourSdf.parse(longHourSdf.format(now));        } catch (Exception e) {            e.printStackTrace();        }        return now;    }    /**     * 获得本小时的结束时间,即2012-01-01 23:59:59     *     * @return     */    public static Date getCurrentHourEndTime() {        Date now = new Date();        try {            now = longSdf.parse(longHourSdf.format(now) + ":59:59");        } catch (Exception e) {            e.printStackTrace();        }        return now;    }    /**     * 获得本月的开始时间,即2012-01-01 00:00:00     *     * @return     */    public static Date getCurrentMonthStartTime() {        Calendar c = Calendar.getInstance();        Date now = null;        try {            c.set(Calendar.DATE, 1);            now = shortSdf.parse(shortSdf.format(c.getTime()));        } catch (Exception e) {            e.printStackTrace();        }        return now;    }    /**     * 当前月的结束时间,即2012-01-31 23:59:59     *     * @return     */    public static Date getCurrentMonthEndTime() {        Calendar c = Calendar.getInstance();        Date now = null;        try {            c.set(Calendar.DATE, 1);            c.add(Calendar.MONTH, 1);            c.add(Calendar.DATE, -1);            now = longSdf.parse(shortSdf.format(c.getTime()) + " 23:59:59");        } catch (Exception e) {            e.printStackTrace();        }        return now;    }    /**     * 当前年的开始时间,即2012-01-01 00:00:00     *     * @return     */    public static Date getCurrentYearStartTime() {        Calendar c = Calendar.getInstance();        Date now = null;        try {            c.set(Calendar.MONTH, 0);            c.set(Calendar.DATE, 1);            now = shortSdf.parse(shortSdf.format(c.getTime()));        } catch (Exception e) {            e.printStackTrace();        }        return now;    }    /**     * 当前年的结束时间,即2012-12-31 23:59:59     *     * @return     */    public static Date getCurrentYearEndTime() {        Calendar c = Calendar.getInstance();        Date now = null;        try {            c.set(Calendar.MONTH, 11);            c.set(Calendar.DATE, 31);            now = shortSdf.parse(shortSdf.format(c.getTime()));        } catch (Exception e) {            e.printStackTrace();        }        return now;    }    /**     * 当前季度的开始时间,即2012-01-1 00:00:00     *     * @return     */    public static Date getCurrentQuarterStartTime() {        Calendar c = Calendar.getInstance();        int currentMonth = c.get(Calendar.MONTH) + 1;        Date now = null;        try {            if (currentMonth >= 1 && currentMonth <= 3)                c.set(Calendar.MONTH, 0);            else if (currentMonth >= 4 && currentMonth <= 6)                c.set(Calendar.MONTH, 3);            else if (currentMonth >= 7 && currentMonth <= 9)                c.set(Calendar.MONTH, 4);            else if (currentMonth >= 10 && currentMonth <= 12)                c.set(Calendar.MONTH, 9);            c.set(Calendar.DATE, 1);            now = longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00");        } catch (Exception e) {            e.printStackTrace();        }        return now;    }    /**     * 当前季度的结束时间,即2012-03-31 23:59:59     *     * @return     */    public static Date getCurrentQuarterEndTime() {        Calendar c = Calendar.getInstance();        int currentMonth = c.get(Calendar.MONTH) + 1;        Date now = null;        try {            if (currentMonth >= 1 && currentMonth <= 3) {                c.set(Calendar.MONTH, 2);                c.set(Calendar.DATE, 31);            } else if (currentMonth >= 4 && currentMonth <= 6) {                c.set(Calendar.MONTH, 5);                c.set(Calendar.DATE, 30);            } else if (currentMonth >= 7 && currentMonth <= 9) {                c.set(Calendar.MONTH, 8);                c.set(Calendar.DATE, 30);            } else if (currentMonth >= 10 && currentMonth <= 12) {                c.set(Calendar.MONTH, 11);                c.set(Calendar.DATE, 31);            }            now = longSdf.parse(shortSdf.format(c.getTime()) + " 23:59:59");        } catch (Exception e) {            e.printStackTrace();        }        return now;    }    public static void main(String args[]) {        System.out.println("当前年开始时间:" + longSdf.format(getCurrentYearStartTime()));        System.out.println("当前年结束时间:" + longSdf.format(getCurrentYearEndTime()));        System.out.println("-------------------");        System.out.println("当前季度开始时间:" + longSdf.format(getCurrentQuarterStartTime()));        System.out.println("当前季度结束时间:" + longSdf.format(getCurrentQuarterEndTime()));        System.out.println("-------------------");        System.out.println("当前月开始时间:" + longSdf.format(getCurrentMonthStartTime()));        System.out.println("当前月结束时间:" + longSdf.format(getCurrentMonthEndTime()));        System.out.println("-------------------");        System.out.println("当前周开始时间:" + longSdf.format(getCurrentWeekDayStartTime()));        System.out.println("当前周结束时间:" + longSdf.format(getCurrentWeekDayEndTime()));        System.out.println("-------------------");        System.out.println("当前天开始时间:" + longSdf.format(getCurrentDayStartTime()));        System.out.println("当前天结束时间:" + longSdf.format(getCurrentDayEndTime()));        System.out.println("-------------------");        System.out.println("当前时开始时间:" + longSdf.format(getCurrentHourStartTime()));        System.out.println("当前时结束时间:" + longSdf.format(getCurrentHourEndTime()));    }}

(4)
<span style="white-space:pre"></span>     Calendar c1 = Calendar.getInstance();  //本周开始 Calendar c2 = Calendar.getInstance();//本周结束 Calendar c3 = Calendar.getInstance(); //上周开始 Calendar c4 = Calendar.getInstance();//上周结束 Calendar c5 = Calendar.getInstance();//本月开始 Calendar c6 = Calendar.getInstance();//本月结束 Calendar c7 = Calendar.getInstance();//任意月开始 Calendar c8 = Calendar.getInstance();//任意月结束 Date thisMonthStart = null; Date thisMonthEnd = null; Date anyMonthStart = null; Date anyMonthEnd = null;  //获取页面查询选择的开始日期和结束日期 try {            int weekday1 = c1.get(Calendar.DAY_OF_WEEK) - 1;            c1.add(Calendar.DATE, -weekday1);            c1.setTime(longSdf.parse(shortSdf.format(c1.getTime()) + " 00:00:00"));                      int weekday2 = c2.get(Calendar.DAY_OF_WEEK);            c2.add(Calendar.DATE, 7 - weekday2);            c2.setTime(longSdf.parse(shortSdf.format(c2.getTime()) + " 23:59:59"));                     int weekday3 = c3.get(Calendar.DAY_OF_WEEK) - 1;            c3.add(Calendar.DATE, -weekday3-7*1);            c3.setTime(longSdf.parse(shortSdf.format(c3.getTime()) + " 00:00:00"));                      int weekday4 = c4.get(Calendar.DAY_OF_WEEK);            c4.add(Calendar.DATE, 7 - weekday4-7*1);            c4.setTime(longSdf.parse(shortSdf.format(c4.getTime()) + " 23:59:59"));                     c5.set(Calendar.DATE, 1);           thisMonthStart = shortSdf.parse(shortSdf.format(c5.getTime()));                    c6.set(Calendar.DATE, 1);            c6.add(Calendar.MONTH, 1);            c6.add(Calendar.DATE, -1);           thisMonthEnd = longSdf.parse(shortSdf.format(c6.getTime()) + " 23:59:59");                      if(time != null && time.equals("anymonth")){          c7.setTime(anymonth_time);              c7.set(Calendar.DATE, 1);               anyMonthStart = shortSdf.parse(shortSdf.format(c7.getTime()));                            c8.setTime(anymonth_time);              c8.set(Calendar.DATE, 1);                c8.add(Calendar.MONTH, 1);                c8.add(Calendar.DATE, -1);               anyMonthEnd = longSdf.parse(shortSdf.format(c8.getTime()) + " 23:59:59");           }      } catch (Exception e) {            e.printStackTrace();        }       if(start_time == null) {start_time = DateUtil.start(new Date());}if(end_time == null) {end_time = new Date(DateUtil.day(start_time, 1).getTime() - 1);}if(time != null){if(time.equals("today")){start_time = DateUtil.start(new Date());end_time = new Date(DateUtil.day(start_time, 1).getTime() - 1);}else if(time.equals("yesterday")){start_time = DateUtil.start(new Date(System.currentTimeMillis()-1000*60*60*24));end_time = new Date(DateUtil.day(start_time, 1).getTime() - 1);}else if(time.equals("anyday")){start_time = anyday_time;end_time = new Date(DateUtil.day(start_time, 1).getTime() - 1);}else if(time.equals("thisweek")){start_time = c1.getTime();end_time = c2.getTime();}else if(time.equals("lastweek")){start_time = c3.getTime();end_time = c4.getTime();}else if(time.equals("thismonth")){start_time = thisMonthStart;end_time = thisMonthEnd;}else if(time.equals("anymonth")){start_time = anyMonthStart;end_time = anyMonthEnd;}}

原创粉丝点击