在mysql数据库中,列名created.this“created”column is text datatype,我需要将此更改为datetime.now this column have so many data.是否可以将其转换为文本数据类型?
数据库看起来像
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
4条答案
按热度按时间ds97pgxw1#
要转换输出或数据库记录吗?第二,您可以使用sql查询:
update'table\u name'set'created'=concat('20','created')
xmd2e60i2#
最好的办法是不要将日期存储为文本。假设你已经这么做了,我们可以打电话给你
STR_TO_DATE
要生成真实日期:因为您期望的输出是标准日期输出,所以我们可以到此为止,避免同时调用
DATE_FORMAT
产生不同的输出。js4nwp543#
如果原始数据不是mysql datetime格式(yyyy-mm-dd hh:mm:ss),则不能将列数据类型从varchar/text更改为date/datetime。否则,将出现无法弥补的数据丢失。
这将是一个多步骤的过程。首先需要将日期字符串转换为mysql日期格式(yyyy-mm-dd hh:mm:ss)。我们可以使用str \u to \u date()函数来实现这个。
您的示例日期字符串(
18-11-15 18:21:25
)基本上是在%y-%m-%d %T
格式。可以使用以下格式说明符:%d
以数字值形式表示的月份日期(01到31)%m
月份名称作为数字值(00到12)%y
以数字形式表示的年份,两位数的值%T
24小时制时间(hh:mm:ss)更新日期的查询如下所示:
现在,你可以用
Alter Table
将数据类型从文本类型更改为日期时间。wd2eg0qa4#
您首先需要在created列中将日期与年份交换,如下所示:
然后,将列转换为datetime,如下所示:
希望这有帮助。