如何在mysql中将文本数据类型转换为datetime?

2wnc66cl  于 2021-06-19  发布在  Mysql
关注(0)|答案(4)|浏览(454)

在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

ds97pgxw

ds97pgxw1#

要转换输出或数据库记录吗?第二,您可以使用sql查询:
update'table\u name'set'created'=concat('20','created')

xmd2e60i

xmd2e60i2#

最好的办法是不要将日期存储为文本。假设你已经这么做了,我们可以打电话给你 STR_TO_DATE 要生成真实日期:

SELECT
    STR_TO_DATE(created, '%y-%m-%d %h:%i:%s') AS created_out
FROM yourTable;

因为您期望的输出是标准日期输出,所以我们可以到此为止,避免同时调用 DATE_FORMAT 产生不同的输出。

js4nwp54

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)
更新日期的查询如下所示:

UPDATE invoices  
SET created = STR_TO_DATE(created, '%y-%m-%d %T');

现在,你可以用 Alter Table 将数据类型从文本类型更改为日期时间。

ALTER TABLE invoices 
MODIFY COLUMN created datetime;
wd2eg0qa

wd2eg0qa4#

您首先需要在created列中将日期与年份交换,如下所示:

UPDATE invoices
SET created = CONCAT(SUBSTR(created, 7, 2), '-', SUBSTR(created, 4, 2), '-', SUBSTR(created, 1, 2));

然后,将列转换为datetime,如下所示:

ALTER TABLE invoices MODIFY created DATETIME;

希望这有帮助。

相关问题