如何从MySQL表中提取格式化的最大日期值

时间:2012-09-25 11:46:51

标签: sql string date max date-format

在我的数据库中,字段日期的值以dd/MM/yyyy hh:mm:ss

中的varchar格式保存

假设我的数据库包含日期21/09/2012 01:01:0102/10/2012 03:04:08

我想查找最大日期,以便通过以下查询将字符串转换为日期

SELECT max(str_to_date(dt.date,'%d/%m/%Y %H:%i:%s')) as max_date from employee emp where emp_id=1;

这会返回正确的结果,但格式为:2012-10-02 03:04:08

但我想要这种格式的结果:02/10/2012 03:04:08。所以我使用了以下查询,但它返回结果:

SELECT max(date_format(str_to_date(emp.date,'%d/%m/%Y %H:%i:%s'),'%d/%m/%Y %H:%i:%s')) as max_date from employee emp where emp_id=1;

结果:21/09/2012 01:01:01

2 个答案:

答案 0 :(得分:4)

这似乎太简单了,但您是否尝试切换调用函数的顺序?

而不是SELECT max(date_format(str_to_date(emp.date,'%d/%m/%Y %H:%i:%s'),'%d/%m/%Y %H:%i:%s')) as max_date from employee emp where emp_id=1;

尝试SELECT date_format(max(str_to_date(emp.date,'%d/%m/%Y %H:%i:%s')),'%d/%m/%Y %H:%i:%s') as max_date from employee emp where emp_id=1;

答案 1 :(得分:2)

为了使max()函数正常工作,不需要将日期转换为字符串。您应该能够运行以下查询并获得所需的结果:

SELECT date_format(max(emp.date), '%d/%m/%Y %H:%i:%s') FROM employee emp WHERE emp_id=1