Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 为给定日期查找MonthEnd日期_Date_Apache Pig - Fatal编程技术网

Date 为给定日期查找MonthEnd日期

Date 为给定日期查找MonthEnd日期,date,apache-pig,Date,Apache Pig,在拉丁语中,是否有一个内置函数来查找给定日期的月末日期?例如,如果给定日期为“2015-03-15”,则返回的月末日期应为“2015-03-31”,如果给定日期为“2015-04-15”,则月末日期应为“2015-04-30”。执行此类操作的一般方法是,如果您没有发现所讨论的语言已经具有一组内置的“执行此类操作”的函数,则。。。在这种情况下: 确定当月的第一天。(“月/01/Year”这是您“手工”完成的唯一步骤。) 加上“一个月”。(在您的语言中应该有某种“DateAdd()”函数…) 最后

在拉丁语中,是否有一个内置函数来查找给定日期的月末日期?例如,如果给定日期为“2015-03-15”,则返回的月末日期应为“2015-03-31”,如果给定日期为“2015-04-15”,则月末日期应为“2015-04-30”。

执行此类操作的一般方法是,如果您没有发现所讨论的语言已经具有一组内置的“执行此类操作”的函数,则。。。在这种情况下:

  • 确定当月的第一天。(“月/01/Year”这是您“手工”完成的唯一步骤。)
  • 加上“一个月”。(在您的语言中应该有某种“DateAdd()”函数…)
  • 最后,使用相同的函数“减去一天”
12月15日=>12月1日=>明年1月1日=>今年12月31日


但首先,要仔细看看。“会计师总是想做这类事情。”通常有一套相当好的,有时非常好的函数来进行日期操作。(如果它们不是语言内置的,通常会有一个别人已经编写和完善的“好东西”库。)

做这些事情的一般方法,如果你没有发现所讨论的语言已经有一组内置的函数来“做这些事”,就是。。。在这种情况下:

  • 确定当月的第一天。(“月/01/Year”这是您“手工”完成的唯一步骤。)
  • 加上“一个月”。(在您的语言中应该有某种“DateAdd()”函数…)
  • 最后,使用相同的函数“减去一天”
12月15日=>12月1日=>明年1月1日=>今年12月31日

但首先,要仔细看看。“会计师总是想做这类事情。”通常有一套相当好的,有时非常好的函数来进行日期操作。(如果它们不是内置于语言中的,那么通常会有一个由其他人编写并完善的“好东西”库。)

您就是这样做的:

REGISTER /usr/lib/pig/piggybank.jar;

DEFINE ISOToMonth org.apache.pig.piggybank.evaluation.datetime.truncate.ISOToMonth();

%declare END_OF_MONTH SubtractDuration(AddDuration(ToDate(ISOToMonth('2015-03-15')),'P1M'),'P1D')

A = LOAD 'DummyFileWithOneRow.txt' USING PigStorage(',') AS (f1:chararray, f2:chararray);

result = FOREACH A GENERATE
        f1 AS f1,
        $END_OF_MONTH AS end_of_month;

DUMP result
这次运行的结果是: (12015-03-31T00:00:00.000Z)

  • 现在可以将此结果转换为所需格式
  • 您可以将此计算作为foreach对加载值的一部分
这就是你的做法:

REGISTER /usr/lib/pig/piggybank.jar;

DEFINE ISOToMonth org.apache.pig.piggybank.evaluation.datetime.truncate.ISOToMonth();

%declare END_OF_MONTH SubtractDuration(AddDuration(ToDate(ISOToMonth('2015-03-15')),'P1M'),'P1D')

A = LOAD 'DummyFileWithOneRow.txt' USING PigStorage(',') AS (f1:chararray, f2:chararray);

result = FOREACH A GENERATE
        f1 AS f1,
        $END_OF_MONTH AS end_of_month;

DUMP result
这次运行的结果是: (12015-03-31T00:00:00.000Z)

  • 现在可以将此结果转换为所需格式
  • 您可以将此计算作为foreach对加载值的一部分

您是否阅读了文档?是的。无法直接找到任何东西。除非我必须使用GetMonth/GetYear resp从给定日期提取月/年。然后评估他们,看看月底日是否应该是30/31/28/29。是的,这正是我要做的。在你的日期上加上一个月,然后减去一天,得到你这个月的最后一个日期。我当然不会仅仅假设有一些特定的MonthEnd函数,或者其他什么。你看过文档了吗?是的。无法直接找到任何东西。除非我必须使用GetMonth/GetYear resp从给定日期提取月/年。然后评估他们,看看月底日是否应该是30/31/28/29。是的,这正是我要做的。在你的日期上加上一个月,然后减去一天,得到你这个月的最后一个日期。我当然不会仅仅假设有一些特定的MonthEnd函数,或者其他什么。为什么第一步是“手动”的呢?当然,当月的第一天总是。。第一个??我的意思不是“用手做”。我基本上是指。。。正是你刚才说的。总是“(月,1,年)。“太棒了!“三十天有九月……”这句话真的很好听为什么第一步是“手工”?当然,当月的第一天总是。。第一个??我的意思不是“用手做”。我基本上是指。。。正是你刚才说的。总是“(月,1,年)。“太棒了!“三十天有九月……”这句话真的很好听