从日期fromat中删除字母并保存在sql表的下一列中

时间:2017-08-04 10:10:11

标签: mysql datetime

我有一张带有dateformat的大桌子,其中包括' T'和' Z'字母。我想删除这两个字母,并在下一列保存其余日期。我的表(tbl_entso_cdbf)看起来像:

     Utc          |date|area_in|area_out|  value  | 
---------------------------------------------------
2015-12-05T03:00Z |NULL| 275   |  40    |   0     |
2015-12-05T03:00Z |NULL| 275   |  40    |   0     |
2015-12-05T03:00Z |NULL| 275   |  40    |   0     |
2015-12-05T03:00Z |NULL| 275   |  40    |   0     |

我希望我的桌子看起来像:

    Utc           |      date      |area_in|area_out|  value  | 
---------------------------------------------------
2015-12-05T03:00Z |2015-12-05 03:00| 275   |  40    |   0     |
2015-12-05T03:00Z |2015-12-05 03:00| 275   |  40    |   0     |
2015-12-05T03:00Z |2015-12-05 03:00| 275   |  40    |   0     |
2015-12-05T03:00Z |2015-12-05 03:00| 275   |  40    |   0     |

列utc的数据类型为VARCHAR,日期列的数据类型为DATETIME。 我尝试过可用的解决方案但是没有工作。如何编写SQL查询以在表中进行更改?

1) UPDATE tbl_entso_cdbf
   SET date = CONVERT(datetimeoffset, utc, 113)

2)`select convert(varchar(50), cast(utc as date), 113) from tbl_entso_cdbf`

它给我一个错误:MySQL server version for the right syntax to use near 'VARCHAR(10), cast(utc as DATETIME), 113)....

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

使用DATE_FORMAT转换时间,然后使用它来设置/更新

UPDATE `tbl_entso_cdbf` SET `date` = DATE_FORMAT(utc, "%Y-%m-%d %H:%i");

答案 1 :(得分:1)

使用str_to_date()函数将字符串转换为日期:)

UPDATE `tbl_entso_cdbf` SET `date` = STR_TO_DATE(utc, "%Y-%m-%dT%H:%iZ");