0

次の SQL クエリがあり、 ageOnLastSeptemberの日付を UK (dd/mm/yyyy) 形式で出力したいと考えています。どうすればこれを達成できるか教えてもらえますか?

$sql="select ( if(month(now()) < 9, year(now()) - 1, year(now())) - year(dob) - if(month(dob)<9, 0, 1)  ) as ageOnLastSeptember,first_name,last_name,dob,school,contact_no,family_id,contact_id from members_family where contact_id = '$contact_id' ";

以下を試しましたが、何もしませんでした

$sql="select date_format(( if(month(now()) < 9, year(now()) - 1, year(now())) - year(dob) - if(month(dob)<9, 0, 1)  ), '%d/%m/%Y') as ageOnLastSeptember,first_name,last_name,dob,school,contact_no,family_id,contact_id from members_family where contact_id = '$contact_id' ";
4

3 に答える 3

2

MySQL を使用してフォーマットするよりも、PHP を使用して日付をフォーマットする方がはるかに簡単で優れていると思います。MySQL からデータを取得した後、PHP のようにフォーマットできます。

$date = date("d/m/Y", strtotime('2002-05-18'));

出力は次のようになります。18/05/2002

したがって、PHP コードは次のようになります。

<td>". date("d/m/Y", strtotime($rows['dob'])) ."</td> 

PHP の日付とその形式の詳細については、http: //php.net/manual/en/function.date.phpを参照してください。

これがお役に立てば幸いです:)

于 2013-04-16T07:47:11.350 に答える
2

データベース レベルでフォーマットを行う必要はありません。日付が日付として保存されている場合 (正しい方法)、レコードを取得してクライアントに送信するだけです。フォーマットは、これらの日付を表示するために使用しているコントロールで行う必要があります。

于 2013-04-16T07:11:26.073 に答える
0

年齢を DD/MM/YYYY の日付としてフォーマットする方法がわかりません。論理的ではないようです

年齢を日数で取得するには、次のようなものを使用できます

SELECT FLOOR(NOW(), DATE_ADD(dob, INTERVAL (ABS(DATEDIFF(CONCAT(YEAR(DATE_ADD(NOW(), INTERVAL -8 MONTH)),':09:01'), NOW())) * -1) DAY)) AS Age
FROM members_family 
WHERE contact_id = '$contact_id'

これは、年齢を年で指定するようにカスタマイズできます (閏年を 100% 正確にするには、特に閏年ではなく 400 年ごとに 100 年ごとに対処する必要がある場合は、少しトリッキーになります)。

于 2013-04-16T07:54:42.363 に答える