hadoop - hive 日历日到儒略日期

标签 hadoop hive hiveql julian-date

我正在尝试将日历日期转换为儒略日期,我在 Teradata 中的做法是:

CAST((TO_CHAR(CURRENT_DATE-1,'J')) AS INT)

我试过以下方法:

from_unixtime(unix_timestamp(date_sub(to_date(from_unixtime(unix_timestamp())),1), 'yyyy-MM-dd'),'j')

但 'j' 不是配置单元的有效模式。

谢谢。

编辑: 我不是要获取格式为 YYYYddd 的儒略日期,而是要获取今天 14/02/2018 为 2458164 的儒略日期。

更多编辑: Teradata 中的此函数输出儒略日,即自公元前 4713 年 12 月 31 日以来的天数。

最佳答案

问题已通过@âńōŋŷXmoůŜ的代码解决。我只是做了一点更改,使用 from_unixtime 和 unix_timestamp 而不是 current_date。

ceiling(2
                    -CAST(IF(MONTH(to_date(from_unixtime(unix_timestamp('04/04/2018','dd/MM/yyyy'),'yyyy-MM-dd')))<=2, YEAR(to_date(from_unixtime(unix_timestamp('04/04/2018','dd/MM/yyyy'),'yyyy-MM-dd')))-1,YEAR(to_date(from_unixtime(unix_timestamp('04/04/2018','dd/MM/yyyy'),'yyyy-MM-dd'))))/100 AS INT)
                    +CAST(CAST(IF(MONTH(to_date(from_unixtime(unix_timestamp('04/04/2018','dd/MM/yyyy'),'yyyy-MM-dd')))<=2, YEAR(to_date(from_unixtime(unix_timestamp('04/04/2018','dd/MM/yyyy'),'yyyy-MM-dd')))-1,YEAR(to_date(from_unixtime(unix_timestamp('04/04/2018','dd/MM/yyyy'),'yyyy-MM-dd'))))/100 AS INT)/4 AS INT)
                    +DAY(to_date(from_unixtime(unix_timestamp('04/04/2018','dd/MM/yyyy'),'yyyy-MM-dd')))
                    +CAST(365.25*(IF(MONTH(to_date(from_unixtime(unix_timestamp('04/04/2018','dd/MM/yyyy'),'yyyy-MM-dd')))<=2,YEAR(to_date(from_unixtime(unix_timestamp('04/04/2018','dd/MM/yyyy'),'yyyy-MM-dd')))-1, YEAR(to_date(from_unixtime(unix_timestamp('04/04/2018','dd/MM/yyyy'),'yyyy-MM-dd'))))+4716) AS INT)
                    +CAST(30.6001*(IF(MONTH(to_date(from_unixtime(unix_timestamp('04/04/2018','dd/MM/yyyy'),'yyyy-MM-dd')))<=2, MONTH(to_date(from_unixtime(unix_timestamp('04/04/2018','dd/MM/yyyy'),'yyyy-MM-dd')))+12, MONTH(to_date(from_unixtime(unix_timestamp('04/04/2018','dd/MM/yyyy'),'yyyy-MM-dd'))))+1) AS INT)
                    -1524.5)

我还设置了一个上限函数来避免小数。

关于hadoop - hive 日历日到儒略日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48757007/

相关文章:

Hadoop 与数据湖

hadoop - 将新组添加到 hdfs

hadoop - 在包含连接的表上执行增量 Sqoop?

excel - 在 Excel 2013 中连接 Hortonworks Hive ODBC 时出错

mysql - Hive 查询问题 - 无效的表别名或列引用

mysql - 如何将配置单元日期转换为以下格式 : from 2016-11-28 to 28-Nov-16?

python - Pydoop 卡在 HDFS 文件的 readline 上

hadoop - 分析MapReduce作业

hadoop - Hive 中的增量/增量负载

hadoop - 谁访问了 Hive 表或 HDFS 目录