将字符串日期更改为日期数据类型

时间:2019-04-28 07:31:02

标签: mysql mysql-workbench

我正在尝试使用列Date对表进行排序。它是颠倒排序的,即日期是降序格式。 但是,列Date是文本格式:'31-June-2008' 我如何对该列进行排序?

尝试修改此代码,但无法正常工作

alter table bajaj1 modify column Date date;

1 个答案:

答案 0 :(得分:1)

您的问题是您的日期不是有效的日期格式,因此它们被按字符串排序。因此,例如,31-June-20089-June-2008之前。要对其正确排序,您需要将其转换为日期,您可以使用STR_TO_DATE

STR_TO_DATE(Date, '%e-%M-%Y')

请注意,我假设当一个月的某天小于10时,它看起来像是4-March-2001。如果类似04-March-2001,则应将%e更改为%d

在查询中,您可以将其用作

SELECT *
FROM yourtable
ORDER BY STR_TO_DATE(Date, '%e-%M-%Y')

如果您想更改表结构,则添加一个generated column可能是最简单的:

ALTER TABLE yourtable ADD sdate DATE AS (STR_TO_DATE(Date, '%e-%M-%Y'))

然后,您可以在sdate而不是Date上进行排序。

Demo on dbfiddle