用德鲁伊摄取 2 位数的年份?

Posted

技术标签:

【中文标题】用德鲁伊摄取 2 位数的年份?【英文标题】:Ingest 2-digit year with druid? 【发布时间】:2021-11-01 03:40:02 【问题描述】:

我想提取格式为 MM/dd/yy 的日期(例如 2003 年 2 月 1 日的 02/01/03)。我不知道如何使用 joda 时间格式字符串来指定它,这似乎是 druid 需要的。

在 java 代码中,我可以通过为 joda DateTimeFormatter 指定一个基准年来做到这一点,但似乎没有办法只用一个格式字符串来做到这一点(这是 druid 摄取规范中可用的全部内容)。

【问题讨论】:

【参考方案1】:

我做了很多试验和错误,发现了以下内容,但我仍然无法在任何地方找到记录。

两位数年份的“轴心点”是 40。40 岁以上的年份是 1900 年代,40 岁以下的年份是 2000 年代。这意味着:

3/4/97 是 1997 年 3 月 4 日 3/4/04 是 2004 年 3 月 4 日 3/4/40 是 2040 年 3 月 4 日 3/4/41 是 1941 年 3 月 4 日

不要指定一位数的年份!这不会像您期望的那样工作;例如:

3/4/3 是公元 3 年的 3 月 4 日。如果您指的是 2003,则必须指定“03”。

不要指定一个 y 格式的字符串!例如,格式字符串“M/d/y”应用于“3/4/03”时将被解释为公元 3 年的 3 月 4 日。

【讨论】:

【参考方案2】:

您可以在 timestampSpec 中指定如何解析您的时间戳

例如:

"timestampSpec": 
  "column": "timestamp",
  "format": "MM/dd/yy"

另请参阅此页面:https://druid.apache.org/docs/latest/ingestion/ingestion-spec.html#timestampspec

【讨论】:

以上是关于用德鲁伊摄取 2 位数的年份?的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 日期输入 6 位数年份

当输入 2 位数年份时,Bootstrap Datepicker 默认为 1900 年

找不到四位数的年份 数据丢失

处理 Y2K 日期转换的首选方法?

将两位数年份转换为四位数

完整(四位数)年份或最后两位数的年份更新,使用JavaScript