1

在我的数据库中,字段日期值以格式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

4

2 回答 2

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;

于 2012-09-25T15:19:32.633 回答
3

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

SELECT date_format(max(emp.date), '%d/%m/%Y %H:%i:%s') FROM employee emp WHERE emp_id=1
于 2012-09-26T06:34:54.297 回答