如何将日期格式 YYYY-MM-DD 转换为 Presto/Hive 中的整数 YYYYMMDD?
How to convert a date format YYYY-MM-DD into integer YYYYMMDD in Presto/Hive?
如何将 CONVERT
格式 YYYY-MM-DD
的日期转换为 Presto/Hive 中的整数 YYYYMMDD
?
我正在尝试将下面的列表转换为 YYYYMMDD
个整数
WITH all_dates as (SELECT
CAST(date_column AS DATE) date_column
FROM
(VALUES
(SEQUENCE(FROM_ISO8601_DATE('2017-07-01'),
FROM_ISO8601_DATE('2017-11-15'),
INTERVAL '1' DAY)
)
) AS t1(date_array)
CROSS JOIN
UNNEST(date_array) AS t2(date_column)
)
我尝试过类似的方法,但它不起作用
SELECT
CAST(
CAST(year(date_column) AS VARCHAR(4)) +
right('0' + CAST(month(date_column) AS VARCHAR(2)), 2) +
right('0' + CAST(day(date_column) AS VARCHAR(2)), 2)
AS DATETIME)
FROM all_dates
如果您只需要将日期 YYYY-MM-DD 转换为整数 YYYYMMDD 为什么不先尝试在使用类似这样的方法将结果转换为 int 之前,从日期的字符串表示中删除所有出现的 "-"
?
cast(regexp_replace(str_column,'-','') as int)
只需 REPLACE
带有空字符串的 '-' 和 CAST
将其 INT
.
尝试以下操作:
SELECT CAST(REPLACE(Date_Column,'-','') AS INT)
你也可以使用date_format
函数:
hive> select cast(date_format('2017-07-01','yyyyMMdd') as int);
OK
20170701
您确定要使用 YYYYMMDD
吗?
Hive 遵循 Java 日期格式约定并根据 https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
你可以看到 YYYY 代表星期年,这意味着你可能会遇到年末日期的麻烦。 2019 年可能显示为 2020 年。
改用yyyyMMdd
。
@leftjoin 的回复可能是正确的。
beeline> select cast(date_format('2019-07-01','yyyyMMdd') as int);
OK
20190701
如何将 CONVERT
格式 YYYY-MM-DD
的日期转换为 Presto/Hive 中的整数 YYYYMMDD
?
我正在尝试将下面的列表转换为 YYYYMMDD
个整数
WITH all_dates as (SELECT
CAST(date_column AS DATE) date_column
FROM
(VALUES
(SEQUENCE(FROM_ISO8601_DATE('2017-07-01'),
FROM_ISO8601_DATE('2017-11-15'),
INTERVAL '1' DAY)
)
) AS t1(date_array)
CROSS JOIN
UNNEST(date_array) AS t2(date_column)
)
我尝试过类似的方法,但它不起作用
SELECT
CAST(
CAST(year(date_column) AS VARCHAR(4)) +
right('0' + CAST(month(date_column) AS VARCHAR(2)), 2) +
right('0' + CAST(day(date_column) AS VARCHAR(2)), 2)
AS DATETIME)
FROM all_dates
如果您只需要将日期 YYYY-MM-DD 转换为整数 YYYYMMDD 为什么不先尝试在使用类似这样的方法将结果转换为 int 之前,从日期的字符串表示中删除所有出现的 "-"
?
cast(regexp_replace(str_column,'-','') as int)
只需 REPLACE
带有空字符串的 '-' 和 CAST
将其 INT
.
尝试以下操作:
SELECT CAST(REPLACE(Date_Column,'-','') AS INT)
你也可以使用date_format
函数:
hive> select cast(date_format('2017-07-01','yyyyMMdd') as int);
OK
20170701
您确定要使用 YYYYMMDD
吗?
Hive 遵循 Java 日期格式约定并根据 https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
你可以看到 YYYY 代表星期年,这意味着你可能会遇到年末日期的麻烦。 2019 年可能显示为 2020 年。
改用yyyyMMdd
。
@leftjoin 的回复可能是正确的。
beeline> select cast(date_format('2019-07-01','yyyyMMdd') as int);
OK
20190701