关闭

UDF函数:日期加减

标签: UDFUDF函数Hadoop
204人阅读 评论(0) 收藏 举报
分类:

@param : date = “20161221” add = “-1”
@return : 20161220” */

package com.chen.udf;

import java.util.Calendar;
import java.util.GregorianCalendar;
/**
 *@param :  date = "20161221" 
 *          add = "-1"
 *@return : "20161220"
 */
public class UdfAddDays {

    public String evaluate(String date,String add){
        int year = Integer.parseInt(date.substring(0, 4));
        int month = Integer.parseInt(date.substring(4,6));
        int day = Integer.parseInt(date.substring(6,8));
        //判断如果传入的日期的月份大于12或者小于1,则返回空
        if(month > 12 || month < 1){
            return "";
        }
        int addDate = Integer.parseInt(add);
        Calendar c = new GregorianCalendar();
        //此处0表示的是一月,故月份减一;
        c.set(year, month-1, day);
        //调用后 day字段的值减去调用前day字段的值等于 addDate;
        c.add(Calendar.DAY_OF_MONTH, addDate);

        year = c.get(Calendar.YEAR);
        month = c.get(Calendar.MONTH) + 1;
        day = c.get(Calendar.DAY_OF_MONTH);
        return year + "" + (month < 10 ? "0" + month : month) + "" + (day < 10 ? "0" + day : day);
    }

    public String evaluate(String date,int add){
        int year = Integer.parseInt(date.substring(0, 4));
        int month = Integer.parseInt(date.substring(4,6));
        int day = Integer.parseInt(date.substring(6,8));
        if(month > 12 || month < 1){
            return "";
        }
        Calendar c = new GregorianCalendar();
        c.set(year, month-1, day);
        c.add(Calendar.DAY_OF_MONTH, add);
        year = c.get(Calendar.YEAR);
        month = c.get(Calendar.MONTH) + 1;
        day = c.get(Calendar.DAY_OF_MONTH);
        return year + "" + (month < 10 ? "0" + month : month) + "" + (day < 10 ? "0" + day : day);
    }

    public static void main(String[] args) {
        UdfAddDays ad = new UdfAddDays();
        System.out.println(ad.evaluate("20161221", "-1")); //20161220
        System.out.println(ad.evaluate("20161221", "15")); //20170105
        System.out.println(ad.evaluate("20161221", 10)); //20161231
    }
}
0
0
查看评论

UDF函数:英文格式日期转换

package com.adtime.udf.main; /** * User:leen * Date:2017/3/24 0024 * Time:9:10 */ import java.text.SimpleDateFormat; import java.util.Date; impo...
  • leen0304
  • leen0304
  • 2017-04-13 14:53
  • 385

Hive永久UDF依赖包问题以及几个日期相关的自定义函数

最近项目用到了hive,需要从mysql中读取一些数据用于hive计算,所以进行了各种百度查询,然后又处理了一些坑问题,最终得到了一个实际可以运行的UDF,其中比较坑的就是依赖包的问题,所以这边记录下 首先hive永久UDF很简单,当然目前百度上能查到的都是临时UDF,旧版本的Hive要添加永久函数...
  • starfd
  • starfd
  • 2017-09-25 10:27
  • 392

日期加减运算符重载C++修改

<br />#include <iostream><br />#include <string><br />#include <math.h><br />using namespace std;<br />...
  • qihailong123456
  • qihailong123456
  • 2011-05-25 13:10
  • 3851

SQL中的DateAdd 、DateDiff 函数实现日期加减

返回跨两个指定日期的日期边界数和时间边界数。DateADD 语法:DateAdd ( datepart , numb , date ) Datepart:指定参于运算的日期部分Numb:需要加减的数值,numb与date相加减结果为函数的值,如果numb为负则进行减Date:参于运算的日期 DAT...
  • sntyy
  • sntyy
  • 2008-07-11 13:40
  • 18767

使用c语言库函数-完成加减天数数后自动转换成相关日期

int nDay = 5; time_t curTime; time(&curTime); int nSec = nDay * 24 * 60 * 60; curTime -= nSec; struct tm timeinfo = {0}; /*! 获取当前系统时间*/ l...
  • guoliushui
  • guoliushui
  • 2014-10-17 17:51
  • 2752

用js进行日期的加减

用js进行日期的加减 具体方法如下:       function addDate(date,days){         var d=new Date(date...
  • eryongyan
  • eryongyan
  • 2014-11-06 16:46
  • 1859

Oracle日期加减计算 方法汇总

无论是DATE还是timestamp都可以进行加减操作。 可以对当前日期加年、月、日、时、分、秒,操作不同的时间类型,有三种方法: 一、 使用内置函数numtodsinterval增加小时,分钟和秒 二、 加一个简单的数来增加天 三、 使用内置函数add_months来增加年和月 ...
  • sinat_24928447
  • sinat_24928447
  • 2016-11-11 10:08
  • 1058

hql 日期 减法

错误:select t from user t where t.endDate-t.startDate=1 正确:select t from user t where t.endDate=t.startDate+1
  • foxox
  • foxox
  • 2013-06-28 11:52
  • 484

DB2时间函数大全_时间加减

时间加减:后边记得跟上时间类型如day、HOUR TIMESTAMP ( TIMESTAMP(DEF_TIME)+1 day)+18 HOUR   DB2时间函数是我们最常见的函数之一,下面就为您介绍一些DB2时间函数,供您参考,希望可以让您对DB2时间函数有更多的了解。 --获取...
  • F7ANTY
  • F7ANTY
  • 2015-05-22 10:12
  • 1532

Oracle 日期加减运算

-- Start 我们都知道数字可以进行加、减、乘、除等运算。那么,日期可不可以呢?答案是,日期只能进行加、减运算。 在开始操作日期之前,我们先了解一下 Oracle 支持哪些日期数据类型,如下所示: DATE TIMESTAMP TIMESTAMP WITH TIME ZONE TIMESTA...
  • shangboerds
  • shangboerds
  • 2015-03-10 15:10
  • 15836
    个人资料
    • 访问:18534次
    • 积分:993
    • 等级:
    • 排名:千里之外
    • 原创:70篇
    • 转载:22篇
    • 译文:2篇
    • 评论:2条
    文章分类