在Apache Hive和Presto(现称为Trino)中,尽管一些日期和时间函数的名称可能相同,但它们的具体语法、使用场景和注意事项可能有所不同。以下是一些常见的日期和时间函数,它们在Hive和Presto中具有相同的名称但可能具有不同的行为或参数:

  1. date_format(timestamp/date, format)

    • Hive: 用于将日期或时间戳格式化为字符串。
    • Presto: 同样用于格式化日期或时间戳。
    • 语法:
      • Hive: date_format(date/timestamp, 'format_string')
      • Presto: date_format(date/timestamp, 'format_string')
    • 使用场景: 将日期或时间戳转换为特定格式的字符串,例如 'yyyy-MM-dd HH:mm:ss'
    • 注意事项: 确保格式字符串与期望的输出格式匹配。
    • 示例:
      • Hive: SELECT date_format(current_timestamp, 'yyyy-MM-dd HH:mm:ss');
      • Presto: SELECT date_format(current_timestamp, 'yyyy-MM-dd HH:mm:ss');
  2. from_unixtime(unix_timestamp, format)

    • Hive: 将Unix时间戳(秒为单位)转换为字符串。
    • Presto: 同样用于转换Unix时间戳,但参数略有不同。
    • 语法:
      • Hive: from_unixtime(bigint unixtime, string format)
      • Presto: from_unixtime(bigint unixtime, format)
    • 使用场景: 将Unix时间戳转换为人类可读的日期和时间格式。
    • 注意事项: Presto的from_unixtime不需要指定格式字符串,因为它默认使用ISO 8601格式。
    • 示例:
      • Hive: SELECT from_unixtime(1625079600, 'yyyy-MM-dd HH:mm:ss');
      • Presto: SELECT from_unixtime(1625079600);
  3. current_date()

    • Hive: 返回当前日期。
    • Presto: 同样返回当前日期。
    • 语法:
      • Hive: current_date()
      • Presto: current_date
    • 使用场景: 获取当前日期。
    • 注意事项: Presto的current_date不需要括号。
    • 示例:
      • Hive: SELECT current_date();
      • Presto: SELECT current_date;
  4. current_timestamp()

    • Hive: 返回当前日期和时间。
    • Presto: 同样返回当前日期和时间。
    • 语法:
      • Hive: current_timestamp()
      • Presto: current_timestamp
    • 使用场景: 获取当前的日期和时间。
    • 注意事项: Presto的current_timestamp不需要括号。
    • 示例:
      • Hive: SELECT current_timestamp();
      • Presto: SELECT current_timestamp;

请注意,尽管这些函数在Hive和Presto中具有相似的名称和功能,但在编写跨平台的SQL查询时,最好检查每个平台的文档以确保正确使用。此外,随着版本的更新,这些函数的行为和参数可能会发生变化,因此始终建议查阅最新的官方文档。