【发布时间】:2017-03-06 15:27:23
【问题描述】:
我在 Hive 中有一个 Customer 表(custid bigint,custname 字符串,DOB 字符串)。 DOB 具有不同格式的值(6/17/1969、08/22/54、2003 年 1 月 11 日)。 我需要将不同格式的日期转换为标准化日期格式 (MM/dd/yy) 并将其存储在 Hive 的另一个表中。
【问题讨论】:
我在 Hive 中有一个 Customer 表(custid bigint,custname 字符串,DOB 字符串)。 DOB 具有不同格式的值(6/17/1969、08/22/54、2003 年 1 月 11 日)。 我需要将不同格式的日期转换为标准化日期格式 (MM/dd/yy) 并将其存储在 Hive 的另一个表中。
【问题讨论】:
第一 -
ANSI/ISO 标准是 YYYY-MM-DD
当日期用数字表示时,它们可以解释为 不同的方法。例如,01/05/12 可能表示 2012 年 1 月 5 日,或 2012 年 5 月 1 日。在个人层面上,这种不确定性可能非常 令人沮丧的是,在商业环境中,它可能非常昂贵。 组织会议和交付、签订合同和采购 如果日期不明确,机票可能会非常困难。
ISO 8601 通过制定国际标准来解决这种不确定性 约定的日期表示方式:
YYYY-MM-DD
例如,2012 年 9 月 27 日表示为 2012-09-27。
第二 -
如果由于某种原因您使用的是旧的 hive 版本并且您必须使用字符串来保存您的日期,我强烈建议您避免使用任何其他日期格式,原因有两个:
1. 这是日期函数唯一支持的格式。
2. 这种格式允许正确的字母比较,例如-
'2017-01-22' > '2016-09-22' 但 '01-22-2017'
【讨论】: