varchar 日期转换为 max() date() mysql
varchar date conversion to max() date() mysql
在我的数据库中,列类型是 varchar(30),它存储日期 (24/02/2018),有多个记录。
我想要最大日期,例如我有 10/01/2016、20/03/2017、24/02/2018。
我正在使用以下查询:
SELECT MAX(receipt_date) as rd FROM tblname
哪个 returns 我 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()
,可以对它们进行排序,可以进行日期运算。
在我的数据库中,列类型是 varchar(30),它存储日期 (24/02/2018),有多个记录。 我想要最大日期,例如我有 10/01/2016、20/03/2017、24/02/2018。 我正在使用以下查询:
SELECT MAX(receipt_date) as rd FROM tblname
哪个 returns 我 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()
,可以对它们进行排序,可以进行日期运算。