如何在雅典娜的字符串数据类型上提取月份名称
How to extract month name on a string datatype on athena
SELECT sales_invoice_date,
MONTH( DATE_TRUNC('month',
CASE
WHEN TRIM(sales_invoice_date) = '' THEN
DATE('1999-12-31')
ELSE
DATE_PARSE(sales_invoice_date, '%m/%d/%Y')
END) ) AS DT
FROM testdata_parquet
我使用上面的查询将字符串转换为日期,并能够在 AWS athena 上获取月份编号,但我无法获取相应的月份名称
我已经试过monthname
和datename('month', ...)
,但他们分别给出了以下错误信息:
SYNTAX_ERROR: line 2:1: Function monthname not registered
SYNTAX_ERROR: line 2:1: Function datename not registered
您可以使用带有 'month'
参数的 to_char()
函数:
to_char(sales_invoice_date, 'month')
为了return月份名称。
Athena 当前基于 Presto .172,因此您应该参考 https://trino.io/docs/0.172/functions/datetime.html 以了解 date/time 值上的可用功能。
您可以通过 date_format()
:
获取月份名称
date_format(value, '%M')
或类似的 format_datetime()
.
format_datetime(value, 'MMM')
示例:
presto:default> SELECT date_format(current_date, '%M');
_col0
----------
December
(1 row)
(已在 Presto 327 上验证,但也适用于 Athena)
SELECT sales_invoice_date,
MONTH( DATE_TRUNC('month',
CASE
WHEN TRIM(sales_invoice_date) = '' THEN
DATE('1999-12-31')
ELSE
DATE_PARSE(sales_invoice_date, '%m/%d/%Y')
END) ) AS DT
FROM testdata_parquet
我使用上面的查询将字符串转换为日期,并能够在 AWS athena 上获取月份编号,但我无法获取相应的月份名称
我已经试过monthname
和datename('month', ...)
,但他们分别给出了以下错误信息:
SYNTAX_ERROR: line 2:1: Function monthname not registered
SYNTAX_ERROR: line 2:1: Function datename not registered
您可以使用带有 'month'
参数的 to_char()
函数:
to_char(sales_invoice_date, 'month')
为了return月份名称。
Athena 当前基于 Presto .172,因此您应该参考 https://trino.io/docs/0.172/functions/datetime.html 以了解 date/time 值上的可用功能。
您可以通过 date_format()
:
date_format(value, '%M')
或类似的 format_datetime()
.
format_datetime(value, 'MMM')
示例:
presto:default> SELECT date_format(current_date, '%M');
_col0
----------
December
(1 row)
(已在 Presto 327 上验证,但也适用于 Athena)