美文网首页zhaoyqiu的数据分析进阶之路2.0
hive中提取年月(与mysql语法存在差异)

hive中提取年月(与mysql语法存在差异)

作者: 喝奶茶不加奶茶 | 来源:发表于2020-07-29 11:26 被阅读0次

背景:
存在表ods_sales_orders


需求:
提取表中字段create_date的年月

实现:

  • 法一:
    利用substr()
select substr(create_date,1,7) as `umonth(当月)` 
from ods_sales_orders limit 10;
  • 法二:利用dateformat()
    注意: date_format() 并没有要求转换前的字段为日期类型,str类型也可以转
select date_format(TO_DATE(`create_date`),'yyyy-MM') as `umonth(当月)` 
from ods_sales_orders limit 10;

或者

select date_format(`create_date`,'yyyy-MM') as `umonth(当月)` 
from ods_sales_orders limit 10;


二者结果一致

存在疑问:
目的是提取字段create_date的年月

原数据:



操作:
因为原字段create_date是字符串类型,所以用TO_DATE()将其转化为日期类型,再利用dateformat()

select date_format(TO_DATE(`create_date`),'%Y-%m') as `umonth(当月)` 
from ods_sales_orders limit 10;

结果:


为什么不是显示成'2019-02'这种形式,哪里有出错吗?但date_format(create_date,'YYYY-mm')显示的月份部分全部为00

回答:
hive和mysql的语法并不完全一致,hive里dateformat的格式是只有'yyyy-MM-dd HH',对应与mysql 的'%Y-%m-%d %H'
修改如下:

select date_format(create_date,'yyyy-MM')
from ods_sales_orders limit 10 ;

总结:

  • hive中将str转为日期用TO_DATE();
    mysql中用str_to_date()
  • hive 与mysql在date_format()中的格式区别
    hive里dateformat的格式是只有'yyyy-MM-dd HH',对应与mysql 的'%Y-%m-%d %H'


  • date_format() 并没有要求转换前的字段为日期类型,str类型也可以转,或者其它格式



    但是to_date 只能是str

附:
hive日期函数

相关文章

  • hive中提取年月(与mysql语法存在差异)

    背景:存在表ods_sales_orders 需求: 提取表中字段 的年月 实现: 法一:利用substr() 法...

  • Hive部署

    1. Hive说明 hive的具体数据保存在HDFS上面,元数据保存在mysql上(可配置),在hive中执行的s...

  • Ambari+HDP安装的Hive出现中文乱码解决

    1 Hive注释comment出现乱码 1.1 Hive建表语句 1.2 Hive的元数据存在Mysql中,而My...

  • mybatis中时间比较Date和String

    在常规操作中,mysql中存在精确到年月日时分秒、年月日、年月、年的查询或者比较 mybatis中如何去实现这样:...

  • Hive是什么?

    Hive与MySQL的区别Hive与MySQL的区别[https://blog.csdn.net/qq_39597...

  • mysql与oracle语法差异

    mysql与oracle语法差异 mysql的一些关键字,如SCHEMA若作为字段名要加上符号` , 使用时`SC...

  • HBase 与Hive的集成

    HBase与Hive的对比 Hive 数据仓库Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做...

  • mysql修改版本

    我们知道,mysql的不同版本,有可能会存在着一些差异,比如: hive中支持的数据转换: linux一次导入多个...

  • hive的严格模式和分区

    相比mysql,hive有严格模式存在,为了不错误扫描整个数据,hive的分区表会将数据分成几个分区。查询分区表中...

  • SparkSQL操作外部数据源

    parquet数据 hive表数据 mysql表数据 hive与mysql结合 1.处理parquet数据 启动s...

网友评论

    本文标题:hive中提取年月(与mysql语法存在差异)

    本文链接:https://www.haomeiwen.com/subject/kqthrktx.html