我知道之前曾多次询问类似的问题,但我已经尝试了所有这些选项,但仍然没有得到理想的结果。
我的sdf为kl,格式如下:
CONSUMER_ID TimeStamp TimeStamp2
<dbl> <dbl> <chr>
1 958 20171201000002 20171201000002
2 985 20171201000005 20171201000005
我想以格式转换时间戳&#34; yyyy / MM / dd H:M:S&#34;
我尝试过多个在网上找到的选项,但这种格式无效。
例如:
library(sparklyr)
library(dplyr)
ms_rech_10 = kl %>% mutate(time_2 = date(timestamp(unix_timestamp(TimeStamp2))))
ms_rech_12 = kl %>% mutate(time_2 = date(TimeStamp2))
ms_rech_12 = kl %>% mutate(time_2 = to_date(TimeStamp2))
但是在每个代码中我得到了以下输出:
CONSUMER_ID TimeStamp TimeStamp2 time_2
<dbl> <dbl> <chr> <date>
1 958 20171201000002 20171201000002 NA
2 985 20171201000005 20171201000005 NA
请以下列格式提供解决方案。
CONSUMER_ID TimeStamp TimeStamp2 time_2
<dbl> <dbl> <chr> <dttm>
1 958 20171201000002 20171201000002 2017/12/01 00:00:02
2 985 20171201000005 20171201000005 2017/12/01 00:00:05
谢谢!
答案 0 :(得分:1)
如果您需要格式化字符串(您不能格式化时间戳):
df <- copy_to(sc, tibble(Timestamp2=c("20171201000002", "20171201000005")))
df %>%
mutate(time2 = from_unixtime(
unix_timestamp(Timestamp2, "yyyyMMddHHmmss"), "yyyy/MM/dd HH:mm:ss"))
# Source: lazy query [?? x 2]
# Database: spark_connection
Timestamp2 time2
<chr> <chr>
1 20171201000002 2017/12/01 00:00:02
2 20171201000005 2017/12/01 00:00:05
否则只需使用to_timestamp(Timestamp2, "yyyyMMddHHmmss")