ToDate 函数提供意外输出
ToDate function provides unexpected output
我使用 ToDate(userinput, format)
函数来隐藏我的 chararray 字段。我使用 ToDate(userinput, 'MM/dd/yyyy')
将字段从 chararray 转换为 date
但看起来我没有看到我预期的输出。
代码如下:
l_dat = load 'textfile' using PigStorage('|') as (first:chararray,last:chararray,dob:chararray);
c_dat = foreach l_dat generate ToDate(dob,'MM/dd/yyyy') as mydate;
describe c_dat;
dump c_dat;
数据如下所示:
(firstname1,lastname1,02/02/1967)
(John,deloy,05/26/1967)
(frank,fun,05/18/1967)
输出如下所示:
c_dat: {mydate: datetime}
(1967-05-26T00:00:00.000-04:00)
(1967-05-18T00:00:00.000-04:00)
(1967-02-02T00:00:00.000-05:00)
我期待的输出是 dateObjects,其数据如下所示:
(05/26/1967)
(05/18/1967)
(02/02/1967)
如果我做错了什么,请指教?
参考:http://pig.apache.org/docs/r0.12.0/func.html#to-date,ToDate 函数的 return 类型是 DateTime 对象。您可以在输出
中共享的架构描述中观察到
c_dat: {mydate: datetime}
如果您拥有所需格式的日期,则无需进行任何转换。
c_dat = foreach l_dat generate dob as mydate;
如果您有兴趣将 chararray 日期转换为任何其他格式,则必须在获取 DateTime 对象后使用 ToString() 函数。
Step 1: Convert date chararray to Date Time Ojbect using ToDate(datesstring, inutformat)
Step 2 : Use ToString(DateTime object, required format) to get the string date in the required format.
这可以通过以下一步实现。
ToString(ToDate(date,inputformat),requiredformat);
参考:http://pig.apache.org/docs/r0.12.0/func.html#to-string了解详情。
我使用 ToDate(userinput, format)
函数来隐藏我的 chararray 字段。我使用 ToDate(userinput, 'MM/dd/yyyy')
将字段从 chararray 转换为 date
但看起来我没有看到我预期的输出。
代码如下:
l_dat = load 'textfile' using PigStorage('|') as (first:chararray,last:chararray,dob:chararray);
c_dat = foreach l_dat generate ToDate(dob,'MM/dd/yyyy') as mydate;
describe c_dat;
dump c_dat;
数据如下所示:
(firstname1,lastname1,02/02/1967)
(John,deloy,05/26/1967)
(frank,fun,05/18/1967)
输出如下所示:
c_dat: {mydate: datetime}
(1967-05-26T00:00:00.000-04:00)
(1967-05-18T00:00:00.000-04:00)
(1967-02-02T00:00:00.000-05:00)
我期待的输出是 dateObjects,其数据如下所示:
(05/26/1967)
(05/18/1967)
(02/02/1967)
如果我做错了什么,请指教?
参考:http://pig.apache.org/docs/r0.12.0/func.html#to-date,ToDate 函数的 return 类型是 DateTime 对象。您可以在输出
中共享的架构描述中观察到c_dat: {mydate: datetime}
如果您拥有所需格式的日期,则无需进行任何转换。
c_dat = foreach l_dat generate dob as mydate;
如果您有兴趣将 chararray 日期转换为任何其他格式,则必须在获取 DateTime 对象后使用 ToString() 函数。
Step 1: Convert date chararray to Date Time Ojbect using ToDate(datesstring, inutformat)
Step 2 : Use ToString(DateTime object, required format) to get the string date in the required format.
这可以通过以下一步实现。
ToString(ToDate(date,inputformat),requiredformat);
参考:http://pig.apache.org/docs/r0.12.0/func.html#to-string了解详情。