mysql - varchar 到日期时间

标签 mysql sql datetime phpmyadmin

我在 phpMyAdmin 中将包含匹配统计信息的 CSV 文件导入到我的数据库中。这些列之一包含匹配日期和时间(称为 Match_date_time),格式为 YYYY-MM-DD hh:mm:ss

这是作为 varchar 导入的,但是当我尝试在 phpMyAdmin 中将其更改为长度/值为 19 的 datetime 时,我收到错误 #1426 - 为“Match_date_time”列指定的精度 19 太大。最大值为 6

当我将它设置为 6 时,它显示为 YYYY-MM-DD hh:mm:ss.000000

如何将此列更改为日期时间类型?

最佳答案

MySQL中日期时间类型的精度不是格式化日期的总长度。这是存储的微秒精度。 DATETIME(6) 表示存储YYYY-MM-DD hh:mm:ss.000000DATETIME(0) 表示不存储微秒,YYYY-MM-DD hh:mm:ss

参见 Fractional Seconds in Time Values .

一般来说,几乎不需要像 VARCHAR(100) 这样设置列限制。它们是消除不必要的硬编码数据限制的好方法。大多数列类型都是可变大小的,因此您不会节省任何空间。使用默认值并更喜欢无限的、可变大小的类型,例如 TEXT 而不是 VARCHAR

但是如果你关心存储微秒,你应该指定它,因为MySQL(惊奇,惊奇)违反了标准。 MySQL 中的默认值为 0。SQL 标准中的默认值为 6。如果您不关心微秒,请保留它。无论哪种方式,每列都是几个字节。

如果 varchar 列中的数据已经是 ISO 8601 格式,并且听起来确实如此,您可以将该列更改为 datetime。

alter table sometable
modify thatcolumn datetime

关于mysql - varchar 到日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41970317/

相关文章:

mysql - 涉及同一个表的多个联接产生 "column doesn' t 存在”错误 - MySQL

mysql - 尝试编辑mysql中的my.cnf文件但不起作用

datetime - VB6 中的日期字符串与机器文化相关吗?

json - golang中存储日期时间偏移量的数据类型

mysql - Visual Studio 2015 在尝试创建 ADO.NET 实体模型类时仅显示 SQL Server 连接

mysql - 无法在 WHERE 子句中使用 SELECT 子句的别名

php - 如何设置 IIS、MS SQL 服务器来显示我的 PHP 错误

asp.net - SQL Server 的默认端口

sql - 根据参数的条件WHERE

ruby-on-rails - 如何在 Rails 中获取 utc 偏移量?