在我的数据库中,字段日期的值以dd/MM/yyyy hh:mm:ss
varchar
格式保存
假设我的数据库包含日期21/09/2012 01:01:01
和02/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
答案 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