MySQL:将Date Date列转换为Year列

时间:2014-06-11 08:04:56

标签: mysql date

我有一个包含DATE列的表格。所有日期都有效,即没有制造商。但实际上我们只使用了这些日期的年份部分。我尝试将此列的类型更改为YEAR(4),我发现以下情况:

  1. 在我的本地系统上,MySQL版本5.5.37通过MySQL CLI,更改类型保留年份。
  2. 在我的本地系统上,MySQL版本5.5.37通过Adminer,更改类型保留年份。
  3. 我们的内部数据库服务器,MySQL版本5.0.46通过MySQL CLI,更改类型保留年份。
  4. 我们的内部数据库服务器,MySQL版本5.0.46通过PhpMyAdmin,更改类型保留年份。
  5. 通过PhpMyAdmin暂存数据库服务器,MySQL版本5.6.13,列中的日期转换为0000。
  6. 通过MySQL CLI暂存数据库服务器,MySQL版本5.6.13,列中的日期转换为0000。
  7. 什么可能导致这些问题,我该如何解决这个问题?目前我们创建了一个Rake任务,我们首先创建一个额外的列,将现有的列日期复制到新的列,更改列并在几年前复制。

    修改:http://dev.mysql.com/doc/refman/5.6/en/upgrading-from-previous-series.html

2 个答案:

答案 0 :(得分:0)

试试这个

ALTER TABLE `tablename` 
CHANGE `columnName` `columnName` YEAR

这会在phpmyadmin中返回0000。您应该创建一个新列并重命名,然后删除旧列。

答案 1 :(得分:0)

YEAR(2)数据类型在选择使用之前应考虑某些问题。

As of MySQL 5.6.6, YEAR(2) is deprecated.

现有表中的YEAR(2)列被视为之前,但新表或更改表中的YEAR(2)将转换为YEAR(4)。

在这里阅读更多内容:

http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-13.html