【问题标题】:Convert String long date to datetime in MySQL在 MySQL 中将字符串长日期转换为日期时间
【发布时间】:2016-01-28 23:18:14
【问题描述】:

我从表中以字符串形式获取此值 'Mon Oct 26 16:34:23 CST 2015'

我想使用str_to_date()将此字符串转换为下一个datetime'2015-10-26 16:34:23',如下:

select str_to_date('Mon Oct 26 16:34:23 CST 2015','%a %b %d %H:%i:%s %Y') val;

但它会返回一个null 值,如果我删除'%Y',我会得到下一个:'0000-10-26 16:34:23'

如何从字符串中跳过'CST' 以获取年份值?

使用replace是直接的解决方案,但我不能丢弃其他时区格式。

提前,谢谢。

【问题讨论】:

    标签: mysql datetime timezone str-to-date


    【解决方案1】:

    您可以在格式字符串中包含时区本身。所以,这行得通:

    select str_to_date('Mon Oct 26 16:34:23 CST 2015','%a %b %d %H:%i:%s CST %Y') val;
    

    当然,如果您的字符串有其他时区,这将不起作用。

    【讨论】:

    • 非常感谢您的解决方案。考虑到其他时区,我必须使用子字符串(总是在结构永不改变的情况下)以避免可能出现的问题。
    • 最后,我将查询构建为下一个:select str_to_date(concat(substring('Mon Oct 26 16:34:23 CST 2015',1,20),substring('Mon Oct 26 16:34:23 CST 2015',length('Mon Oct 26 16:34:23 CST 2015')-3,4)),'%a %b %d %H:%i:%s %Y') val; 唯一必须更改的是字段名称的'Mon Oct 26 16:34:23 CST 2015'。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 2011-12-16
    • 2014-05-24
    相关资源
    最近更新 更多