Hive date_format() 详解及其注意事项#yyds干货盘点#

时间:2022-01-21 00:41:31

介绍

date_format()Hive中用于将日期时间值格式化为字符串的函数。该函数可以将日期时间值转换为目标格式的字符串。

SELECT date_format(date, format) FROM table;

其中,date 是要格式化的日期值或者 Hive 字符串类型的日期格式。format 是格式化字符串,用于指定日期时间的显示格式。常用格式如下:

  • %Y 年份,4 位数字。(例如:1999)
  • %y 年份,2 位数字。(例如:99)
  • %m 月份,2 位数字。(例如:01~12)
  • %d 日期,2 位数字。(例如:01~31)
  • %H 小时,24 小时制,2 位数字。(例如:00~23)
  • %h 小时,12 小时制,2 位数字。(例如:01~12)
  • %i 分钟,2 位数字。(例如:00~59)
  • %s 秒,2 位数字。(例如:00~59)
  • %p AM 或 PM。

例如,将日期 2022-01-01 10:00:00 格式化为 yyyy/MM/dd HH:mm:ss 的字符串:

SELECT date_format('2022-01-01 10:00:00', 'yyyy/MM/dd HH:mm:ss');

需要注意点是

在使用 date_format() 函数时,需要注意以下几点:

  1. date 参数必须是日期时间类型或可以转换为日期时间类型的字符串类型。否则会返回 NULL
  2. format 参数必须是有效的日期时间格式化字符串,否则会返回 NULL
  3. format 参数中使用大小写字母的区别要注意,例如 %Y 表示以四位数年份表示,而 %y 表示以两位数年份表示。
  4. 在使用 date_format() 函数时,可能会遇到与选定的日期时间格式不匹配的问题,导致无法正确格式化日期时间值,因此需要在选择日期时间格式时要谨慎。
  5. 在某些版本的 Hive 中,date_format() 函数支持更多的日期时间格式化选项,如 %u 表示周中的星期几(1-7),%w 表示周中的天数(0-6),%j 表示一年中的第几天等。因此,在使用 date_format() 函数时,需要根据具体版本的支持情况选择合适的日期时间格式化选项。

总之,在使用 date_format() 函数时,需要根据实际需求选择适当的日期时间格式化选项,并注意格式化字符串的大小写、拼写和符号匹配等细节。

举个例子

SELECT date_format('2022-09-15 22:30:00', 'MMM d, yyyy'' at'' h:mm a z');

Sep 15, 2022 at 10:30 PM UTC

  • %b:月份的缩写,例如:Sep
  • %d:日期,2 位数字,例如:15
  • %Y:年份,4 位数字,例如:2022
  • '' at '':单引号字符串,用于在结果字符串中显示 at,例如:at
  • %h:12 小时制的小时数,例如:10
  • %mm:分钟,2 位数字,例如:30
  • %pm:大写的 AMPM,例如:PM
  • %z:时区,例如:UTC

需要注意的是,在该例子中使用了两对单引号 ''at 进行了转义,防止其被误认为是格式化字符串的开头或结尾。

该格式化字符串的输出结果显示了时间值以缩写月份、日期、年份、小时(12 小时制)、分钟、大写 AMPM 和时区表示。