在我的数据库中,列类型是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
但失败了。
这就是我要做的:
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()
,它可以对它们进行排序,它可以进行日期算术。