我如何转换一个 string 表示格式为的日期时间 "YYYY-MM-DD;HH:MM:SS" (即。 2016-04-11;19:38:01 )到一个适当的地方 timestamp ?我以为这样行得通,但行不通。
string
"YYYY-MM-DD;HH:MM:SS"
2016-04-11;19:38:01
timestamp
select from_unixtime(unix_timestamp(`date`, "YYYY-MM-DD;HH:MM:SS")) from t1 limit 100;
q43xntqr1#
正如@jbapple在对我的问题的评论中所建议的那样,问题在于资本化。如 Impala 文献所述目前,格式字符串是区分大小写的,特别是区分m(表示分钟)和m(表示月份)。在impala 1.3及更高版本中,可以切换元素的顺序,使用可选分隔符,并为每个单元使用不同数量的占位符。添加更多的y、d、h等示例将生成输出字符串,按请求的字符数进行零填充。例外情况是m for months,其中m产生非填充值(如3),mm产生零填充值(如03),mmm产生缩写月名(如mar),并且不允许4个或更多m的序列。包含所有字段的日期字符串可以是“yyyy-mm-dd hh:mm:ss.ssss”、“dd/mm/yyyy hh:mm:ss.ssss”、“mmm-dd,yyyy hh.mm.ss(ssssss)”或占位符和分隔符的其他组合。正确的写作方式是:
select from_unixtime(unix_timestamp(`date`, "yyyy-MM-dd;HH:mm:ss")) from t1 limit 100;
pn9klfpd2#
的返回类型 from_unixtime() 是不是一个“合适的” timestamp “但是一根绳子(以及 unix_timestamp() 不是。。。一 timestamp ,但是 bigint ).我要做的就是 timestamp 返回类型:
from_unixtime()
unix_timestamp()
bigint
select cast(unix_timestamp(`date`, "yyyy-MM-dd;HH:mm:ss") as timestamp) from t1 limit 100;
为了完整起见,以下是我如何处理时区、本地格式化的日期,并将它们存储为utc时间戳:
select to_utc_timestamp(cast(unix_timestamp(`date`, "yyyy-MM-dd;HH:mm:ss") as timestamp), "Europe/Paris") from t1 limit 100;
这假设 -use_local_tz_for_unix_timestamp_conversions 启动标志为关闭(这是默认值)。
-use_local_tz_for_unix_timestamp_conversions
drkbr07n3#
没有一个答案涉及 unix_timestamp 为我在ClouderaV5上运行 Impala 工作。但是一个简单的 select cast('1985-09-25 17:45:30.005' as timestamp); 作品。看这个文件
unix_timestamp
select cast('1985-09-25 17:45:30.005' as timestamp);
3条答案
按热度按时间q43xntqr1#
正如@jbapple在对我的问题的评论中所建议的那样,问题在于资本化。如 Impala 文献所述
目前,格式字符串是区分大小写的,特别是区分m(表示分钟)和m(表示月份)。在impala 1.3及更高版本中,可以切换元素的顺序,使用可选分隔符,并为每个单元使用不同数量的占位符。添加更多的y、d、h等示例将生成输出字符串,按请求的字符数进行零填充。例外情况是m for months,其中m产生非填充值(如3),mm产生零填充值(如03),mmm产生缩写月名(如mar),并且不允许4个或更多m的序列。包含所有字段的日期字符串可以是“yyyy-mm-dd hh:mm:ss.ssss”、“dd/mm/yyyy hh:mm:ss.ssss”、“mmm-dd,yyyy hh.mm.ss(ssssss)”或占位符和分隔符的其他组合。
正确的写作方式是:
pn9klfpd2#
的返回类型
from_unixtime()
是不是一个“合适的”timestamp
“但是一根绳子(以及unix_timestamp()
不是。。。一timestamp
,但是bigint
).我要做的就是
timestamp
返回类型:为了完整起见,以下是我如何处理时区、本地格式化的日期,并将它们存储为utc时间戳:
这假设
-use_local_tz_for_unix_timestamp_conversions
启动标志为关闭(这是默认值)。drkbr07n3#
没有一个答案涉及
unix_timestamp
为我在ClouderaV5上运行 Impala 工作。但是一个简单的select cast('1985-09-25 17:45:30.005' as timestamp);
作品。看这个文件