varchar日期转换为max()date()mysql

问题描述 投票:1回答:1

在我的数据库中,列类型是varchar(30),它存储日期(24/02/2018),具有多个记录。我想要最长的日期,例如我有10/01 / 2016,20 / 20 / 2017,24 / 02/201。我使用以下查询:

SELECT MAX(receipt_date) as rd FROM tblname

这让我觉得10/01/2016这是错误的。我也尝试将其转换为日期格式。但失败了。 mysql给我语法错误。

SELECT CONVERT(varchar, mycolumn, 105) FROM tblname

但失败了。

mysql date-conversion
1个回答
0
投票

这就是我要做的:

ALTER TABLE tblname ADD COLUMN receipt_date2 DATE;

UPDATE tblname SET receipt_date2 = STR_TO_DATE(receipt_date, '%d/%m/%Y');

ALTER TABLE tblname DROP COLUMN receipt_date,
  CHANGE receipt_date2 receipt_date DATE;

SELECT MAX(receipt_date) AS rd FROM tblname;

如果您以dd-mm-yyyy格式存储而不是VARCHAR,则无法在MySQL中有效地使用日期。您应该使用DATE数据类型。 MySQL的DATE数据类型仅以yyyy-mm-dd格式存储日期。这样它就可以轻松搜索MAX(),它可以对它们进行排序,它可以进行日期算术。

© www.soinside.com 2019 - 2024. All rights reserved.