创建新的日期格式
Posted
技术标签:
【中文标题】创建新的日期格式【英文标题】:Create a new Date format 【发布时间】:2018-06-11 12:49:50 【问题描述】:我有一个包含 MM/dd/yyyy 格式的日期字段的数据集,我的目标是创建一个具有相同日期格式但具有时间戳格式的表(最后,应该有一个执行日期的选项函数,如果是 int 或 string 日期函数将不起作用。)
我尝试过的事情: 我的栏目名称:as_of_date
1) cast(unix_timestamp(as_of_date
, "MM/dd/yyyy") 作为时间戳)
i/p -> 01/03/2006,o/p ->2006-01-03 00:00:00
问题 - 我不希望输出中有额外的零。 substr 不适用于日期函数
2) 如果我将值保留为字符串,日期函数将不起作用。 天('01/03/2006') 输入:'01/03/2006',输出:null(但预期为 3)
您能否帮我一个已经存在的日期格式,或者帮我为我的逻辑创建一个新的日期格式。
【问题讨论】:
【参考方案1】:尝试一次
使用 unix_timestamp 函数匹配您的 输入日期格式 然后使用 from_unixtime 函数更改 输出格式 然后转换为 date 类型。
hive> select date(from_unixtime(unix_timestamp("03/06/2018", "MM/dd/yyyy"),"yyyy-MM-dd"));
+-------------+--+
| _c0 |
+-------------+--+
| 2018-03-06 |
+-------------+--+
在 Impala 中:
hive> select from_unixtime(unix_timestamp("03/06/2018", "MM/dd/yyyy"),"yyyy-MM-dd");
+-------------+--+
| _c0 |
+-------------+--+
| 2018-03-06 |
+-------------+--+
【讨论】:
谢谢@shu 我在 Hive 中试过,效果很好。蜂巢>选择日期(from_unixtime(unix_timestamp(“03/06/2018”,“MM/dd/yyyy”),“yyyy-MM-dd”)); OK 2018-03-06 但是当我在 Impala 中尝试相同的操作时,我收到一条错误消息: [impala] > select date(from_unixtime(unix_timestamp("03/06/2018", "MM/dd/yyyy"),"yyyy -MM-dd"));错误:AnalysisException:第 1 行中的语法错误:遇到:预期日期:ALL、CASE、CAST、DISTINCT、EXISTS、FALSE、IF、INTERVAL、NOT、NULL、STRAIGHT_JOIN、TRUNCATE、TRUE、IDENTIFIER 原因:异常:语法错误 在 impala 中尝试不转换为日期类型 select from_unixtime(unix_timestamp("03/06/2018", "MM/dd/yyyy"),"yyyy-MM-dd"); 所以在创建表时我需要正确提及这些方式:以上是关于创建新的日期格式的主要内容,如果未能解决你的问题,请参考以下文章
使 Django forms.DateField 显示使用本地日期格式
Java日期时间API系列33-----Jdk8中java.time包中的新的日期时间API类应用,格式化常用模板大全,新增Excel常用格式。