You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hive中如何从8位BigInt类型DATE字段提取中间两位月份(无需转字符串)

可以直接实现,无需转换原始DATE字段为字符串

你可以通过整数除法和取模运算直接从BigInt类型的8位日期中提取月份,不需要先将DATE字段转为字符串。以下分两种场景给出实现方式:

场景1:获取数字形式的月份(如1、12)

直接使用数学运算提取:

SELECT (date_val / 100) % 100 AS month_number
FROM your_hive_table;

运算逻辑:

  • date_val / 100:对8位数字做整数除法,去掉最后两位日部分,得到前6位(例如20220120 → 202201)
  • % 100:对前6位取模100,得到中间两位的数字值(202201 → 1)

场景2:获取两位字符串格式的月份(如01、12)

如果需要保留两位数的格式,仅需将运算后的数字结果转为字符串并补零即可,原始DATE字段仍保持BigInt类型:

SELECT lpad(CAST((date_val / 100) % 100 AS STRING), 2, '0') AS month_string
FROM your_hive_table;

逻辑补充:

  • CAST(...) AS STRING:将提取到的数字月份转为字符串
  • lpad(..., 2, '0'):给不足两位的月份补前导零,确保输出为两位格式

内容的提问来源于stack exchange,提问作者Catanzaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:57:23