0

申し訳ありませんが、スレッドを検索して脳が痛くなるまで試しましたが、助けを求めなければなりません。

Id、Name、Born(Year only)、Colour、Diedの「Horse」というテーブルがあります。

死亡した馬の年齢を返し、3を掛けて人間の年数を取得し、馬のID、名前、および人間の年数を表示する必要があります。

私は最初のハードルで立ち往生しています。馬の年齢を返すためのテーブルを取得できません。

私は別のSOユーザーの提案を使用しています。

Human YearsとしてDATEDIFF(horse.born、 '2012')/365.25を選択します

ただし、これはNullを返します。

また、CURDATEを試しました:

CURDATE('%Y%')-馬から人間の年として生まれました。

ダメ。任意のヒント?

4

2 に答える 2

0

以下は、生まれたものが「int」であり、死亡したものが「date」であると想定しています。

select (Year(died)-born) * 3 from horse where died is not null

(また、すべての競走馬は1月1日に生まれると見なされるため、小数年は無視できます)。

于 2012-07-22T23:57:41.287 に答える
0

Bornに1年しか含まれていない場合(おそらく整数として?)、その列で日付計算を実行することはできません。Human Yearsまた、スペースを含むような列名で問題が発生する可能性があります。それともタイプミスですか?

とにかく、次のようなことを試してください。

SELECT Id, Name, (YEAR(CURDATE()) - Born) * 3 AS Human_Years
  FROM horse
  WHERE Died IS NOT NULL

それともDied日付フィールドですか?その場合、おそらく次のようなものが必要になります。

SELECT Id, Name,
  (DATEDIFF(Died, STR_TO_DATE(CONCAT(Born, "-08-01"),"%Y-%m-%d")/365.25 * 3 AS Human_Years
  FROM horse
  WHERE Died IS NOT NULL
于 2012-07-22T23:59:32.113 に答える