mysql - 如何在mysql中将文本数据类型转换为日期时间?

标签 mysql phpmyadmin

在mysql数据库中,列名已创建。这个“创建”列是文本数据类型,我需要将其更改为日期时间。现在该列有这么多数据。是否可以转换它或?

数据库看起来像

created
18-11-15 18:21:25

预期输出为

created
2018-11-15 18:21:25

我什么时候做

ALTER TABLE invoices MODIFY created datetime

此查询给出错误的数据。它从 15-09-18 03:03:43 转换为 2015-09-18 03:03:43

最佳答案

如果原始数据不在MySQL Datetime中格式 (YYYY-MM-DD HH:MM:SS),您不能仅将列数据类型从 Varchar/Text 更改为 Date/Datetime。否则,将会造成不可挽回的数据丢失。

这将是一个多步骤的过程。您首先需要将日期字符串转换为 MySQL date format (YYYY-MM-DD HH:MM:SS)。我们可以使用STR_TO_DATE()函数用于此。

您的示例日期字符串 (18-11-15 18:21:25) 基本上采用 %y-%m-%d %T 格式。可以使用以下格式说明符:

  • %d 数值形式的月份中的第几天(01 到 31)
  • %m 月份名称为数值(00 到 12)
  • %y 2 位数值形式的年份
  • %T 24 小时格式的时间 (hh:mm:ss)

更新日期的查询如下所示:

UPDATE invoices  
SET created = STR_TO_DATE(created, '%y-%m-%d %T');

现在,您可以使用Alter Table将数据类型从文本类型更改为日期时间。

ALTER TABLE invoices 
MODIFY COLUMN created datetime;

关于mysql - 如何在mysql中将文本数据类型转换为日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53357478/

相关文章:

MySQL CSV 导入中的无效字段计数

php - 如何将表中的列值检索到 PHP 变量中?

mysql - 关系型数据库设计多用户类型

mysql - 获取 Microsoft Access 中的行以引用其他行

php - MySQL 错误 : "Column count doesn' t match value count at row 1"- beginner help

phpMyAdmin - 大整型值始终以零结尾

MySQL 表参数差异

mysql - phpMyAdmin 和 Amazon RDS 的问题

php - #1045 无法登录 MySQL 服务器

php - MySQL - 设置外键以请求正确数据的新手