アレッ*_*ックス 2 mysql sql datetime datetime-format
在我的MySql表中有一个名为_time的varchar类型的列.它保存的值是以下格式:year month day hour minute没有空格:201409201945我想将其转换为datetime所以我这样做:
ALTER TABLE `my_table` CHANGE COLUMN `_time` `date_time` DATETIME NOT NULL;
Run Code Online (Sandbox Code Playgroud)
它出于某种原因抛出此错误:
Error Code: 1292. Incorrect datetime value: '201409201945' for column '_date_time' at row 1 0.036 sec
@Arkain提到的三个步骤将在STR_TO_DATE函数的帮助下完成
-- add the new column
ALTER TABLE `my_table` ADD COLUMN `date_time` DATETIME;
-- update the new column with the help of the function STR_TO_DATE
UPDATE `my_table` SET `date_time` = STR_TO_DATE(`_time`, '%Y%m%d%H%i');
-- drop the old column
ALTER TABLE `my_table` DROP COLUMN `_time`;
Run Code Online (Sandbox Code Playgroud)
STR_TO_DATE的完整说明符列表可以在DATE_FORMAT中找到,这里摘录了我使用的那些:
%d Day of the month, numeric (00..31)
%H Hour (00..23)
%i Minutes, numeric (00..59)
%m Month, numeric (00..12)
%Y Year, numeric, four digits
Run Code Online (Sandbox Code Playgroud)
如果新列应该具有NOT NOLL属性,则一种方法是在操作之前将sql模式设置为''并稍后重置sql_mode:
SET @old_mode = @@sql_mode;
SET @@sql_mode = ''; -- permits zero values in DATETIME columns
ALTER TABLE `my_table` ADD COLUMN `date_time` DATETIME NOT NULL;
UPDATE `my_table` SET `date_time` = STR_TO_DATE(`_time`, '%Y%m%d%H%i');
ALTER TABLE `my_table` DROP COLUMN `_time`;
SET @@sql_mode = @old_mode;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3835 次 |
| 最近记录: |