【问题标题】:How to convert varchar date to datetime in MySQL如何在 MySQL 中将 varchar 日期转换为日期时间
【发布时间】:2015-06-19 22:12:25
【问题描述】:

如何在 MySQL 中将以下日期格式转换为日期时间格式?现在它存储为 varchar。我应该使用 Python 脚本,还是有一个内置的 MySQL 函数可以完成它?

    27 07 (2009), 10:38 PM,

【问题讨论】:

标签: mysql


【解决方案1】:

喜欢这个

SELECT STR_TO_DATE('27 07 (2009), 10:38 PM', '%d %m (%Y), %l:%i %p');

这里是说明符:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

如果原始文本包含一个尾随逗号,您只需在模式中匹配它

SELECT STR_TO_DATE('27 07 (2009), 10:38 PM,', '%d %m (%Y), %l:%i %p,');

如果要更新列,可以运行如下更新语句:

update mytable 
set dateat = STR_TO_DATE(dateat, '%d %m (%Y), %l:%i %p,')

别忘了把你的字段从 varchar 改成 datetime

【讨论】:

  • 有没有办法先删除逗号并更新整个列?
  • 通过 MySQL Workbench 运行命令产生了以下响应:您正在使用安全更新模式,并且您尝试更新没有使用 KEY 列的 WHERE 的表 要禁用安全模式,请切换首选项中的选项 - > SQL 查询并重新连接。 0.032 秒
  • @SagarSamtani,你需要像stackoverflow.com/questions/11448068/…一样禁用safe update
【解决方案2】:

你可以在mysql中使用str_to_date函数。

str_to_date(列,格式)

示例:从表中选择 str_to_date("27 07 (2009), 10:38 pm","%d %m (%Y), %l:%i %p")

【讨论】:

    【解决方案3】:

    你可以使用这个语句

    SELECT STR_TO_DATE('27 07 (2009), 10:38 PM, '%d %m(%Y),%H:%i');

    这会给你 2009-07-27 22:38:00

    无需担心下午或上午。 %H 会处理这个问题,并在晚上 10 点提到 22,然后 PM 将是多余的。

    【讨论】:

      猜你喜欢
      • 2014-06-07
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      相关资源
      最近更新 更多