1

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

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 に答える