Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在Impala中将字符串转换为时间戳_String_Casting_Timestamp_Impala - Fatal编程技术网

String 在Impala中将字符串转换为时间戳

String 在Impala中将字符串转换为时间戳,string,casting,timestamp,impala,String,Casting,Timestamp,Impala,如何将表示日期时间的字符串转换为适当的时间戳 我原以为这样行得通,但事实并非如此 select from_unixtime(unix_timestamp(`date`, "YYYY-MM-DD;HH:MM:SS")) from t1 limit 100; 正如@jbapple在对我的问题的评论中所建议的,问题在于资本化。如Impala文件所述 目前,格式字符串区分大小写,特别是对于 区分m表示分钟,m表示月。在黑斑羚1.3及更高版本中, 您可以切换元素的顺序,使用可选分隔符 字符,并为每

如何将表示日期时间的
字符串
转换为适当的
时间戳

我原以为这样行得通,但事实并非如此

select 
  from_unixtime(unix_timestamp(`date`, "YYYY-MM-DD;HH:MM:SS"))
from t1
limit 100;

正如@jbapple在对我的问题的评论中所建议的,问题在于资本化。如Impala文件所述

目前,格式字符串区分大小写,特别是对于 区分m表示分钟,m表示月。在黑斑羚1.3及更高版本中, 您可以切换元素的顺序,使用可选分隔符 字符,并为每个单元使用不同数量的占位符。 添加更多的y、d、H等实例将生成输出字符串 零填充到请求的字符数。M是个例外 对于月,其中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;

_unixtime()的
返回类型不是“正确的
时间戳”
,而是字符串。(并且
unix\u timestamp()
的返回类型不是…一个
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
启动标志已关闭(这是默认设置)。

涉及
unix_timestamp
的所有答案都不适用于我在Cloudera v5上运行Impala的情况。 但是一个简单的
选择cast('1985-09-2517:45:30.005'作为时间戳)工作

参见此

此返回“警告:错误的日期/时间转换格式:YYYY-MM-DD;HH:MM:SS”。如果你读了手册,它说资本化很重要。这是:。您正在查找关于from_unixtime的部分,以解释如何在unix_时间戳中使用该格式。