我有一个表'day_trade',其中一个名为'date'的CHAR列包含以下格式的数据: 2018年4月26日星期四00:00:22 GMT + 0000
我想将此列转换为DATETIME,以便我可以在列上执行数据转换等操作。我一直在使用str_to_date函数,但它并不总是可靠的。
我可以运行以下SQL并以我想要的日期格式获取数据
df %>% group_by(id, init_cont, family,
description = gsub("^(impact).*","\\1", description)) %>%
summarise(value = mean(value))
# # A tibble: 6 x 5
# # Groups: id, init_cont, family [?]
# id init_cont family description value
# <int> <chr> <chr> <chr> <dbl>
# 1 1 K S impact 2.00
# 2 1 K S read 2.00
# 3 2 I S impact 3.00
# 4 2 I S read 1.00
# 5 3 K D impact 4.00
# 6 3 K D read 3.00
2018-04-26 00:00:22
因此我尝试运行以下语句:
select convert(str_to_date(date, "%a %b %d %Y %k:%i:%s"),datetime) from alert_test.day_trade
计划是将字符串转换为有效的DATETIME格式,然后对列进行更改为DATETIME类型
update alert_test.day_trade set date = convert(str_to_date(date, "%a %b %d %Y %k:%i:%s"),datetime)
我收到以下错误:
0 78 13:17:51 update alert_test.day_trade set date = convert(str_to_date(date, "%a %b %d %Y %k:%i:%s"),datetime) Error Code: 1292.
然后我想创建一个DATETIME类型的新'date2'列,并尝试从date选择,转换并插入date2:
Truncated incorrect datetime value: 'Thu Apr 26 2018 00:00:22 GMT+0000' 0.047 sec
同样的错误
最后我为类型VARCHAR创建了一个date3,并认为我将转换为date3,然后a)将该列更改为DATETIME,或者在date2中执行select插入,这已经是DATETIME。
update alert_test.day_trade set date2 = convert(str_to_date(date, "%a %b %d %Y %k:%i:%s"),datetime)
同样的错误。
基本上我无法将数据转换为有效的DATETIME格式。
答案 0 :(得分:0)
我有一张桌子&#39; day_trade&#39;使用名为&#39; date&#39;的CHAR列以下格式的数据:2018年4月26日星期四00:00:22 GMT + 0000
str_to_date(date, "%a %b %d %Y %k:%i:%s")
Truncated incorrect datetime value: 'Thu Apr 26 2018 00:00:22 GMT+0000'
你错过了一点,时区和偏移。
str_to_date(date, "%a %b %d %Y %k:%i:%s GMT+0000")
如果您很幸运并且所有日期时间都是格林尼治标准时间,那么您已经完成了。
如果没有,那就是另一个问题。
答案 1 :(得分:0)
我发布GMT后发现了这个问题。我不需要这些信息所以我只是将其删除然后转换按预期工作。
update alert_test.day_trade set date = replace(date," GMT+0000", "")