在Pig Latin中,是否有内置函数来查找给定日期的月末日期?例如,如果给定日期为“2015-03-15”,则返回的月末日期应为“2015-03-31”,如果给定日期为“2015-04-15”,则月末日期应为“ 2015年4月30' 日。
答案 0 :(得分:3)
您就是这样做的:
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
此次运行的结果是: (1,2015-03-31T00:00:00.000Z)
答案 1 :(得分:1)
执行此类操作的常用方法,如果您没有发现有问题的语言已经具有“执行此类操作”的内置函数集,则是......在这种情况下:
12月15日=> 12月1日=> 1月1日(明年)=> 12月31日(今年)。
但首先,仔细看看。 “会计师希望做到这一切所有时间。” 通常是一个非常好的,有时是非常好的函数集来进行日期操作。 (如果他们没有内置于该语言中,那么通常会有一个由其他人编写并完善的“好东西”库。)