2011-08-03 14 views
0

私はHotelというMySQLテーブルを持っています。私は以下のフィールドを持っています。IDhotelNameAddressYearOfEstablishmentSQL文を書く際の問題

はタイプDateであり、日付は2010-12-26として保存されます。私がする必要があるのは、日付の違いを見つけることです。そのためのSQLは次のとおりです。

SELECT DATEDIFF('2011-08-08','2010-07-26'); 

例えば2つの日付の差が120日であるかもしれないように上記のクエリのための答えは、日中で与えられます、私はYearsでこれを表示する必要があります。値120365で割って年を指定するようにします。このためにSQL文を書くにはどうすればよいですか?

2.)今度は、Hotelテーブルの列とYear difference values(上記で説明した)のすべてを表示する別のSQLを記述する必要があります。このためにSQLを書くにはどうすればいいですか? (私はMySQLを使用しています)

+2

違いは、2つの値を必要と...あなたはYearOfEstablishmentのみを持っています。他の価値はどこから来ていますか?あなたはどのホテルがどれが一番古いのかを比較するのですか?今日の日付と比較してホテルの年齢を知ることができますか? –

答えて

1
  1. SELECT DATEDIFF('2011-08-08','2010-07-26')/365;
  2. SELECT ID,hotelName,Address,YearOfEstablishment, DATEDIFF(YearOfEstablishment,'2010-07-26')/365 AS years FROM Hotel;

を試してみてくださいaverage year has 365.2425 daysことを知ってください。

参照日時が今の場合、単にNOW()SELECT DATEDIFF('2011-08-08',NOW())/365;を使用してください。あなたはこのようなクエリを使用することができるはずです

+0

2番目の答えの完全なSQLは何ですか? 'From Table_Name'もあるはずです。どうすればいいですか? – Illep

+0

これをクエリに追加するだけです。私の例を更新しました。 – Shi

0

、しかしこの

SELECT MOD (DATEDIFF('2011-08-08','2010-07-26'), 365) ;

+0

動作しません。 datediffは単純な整数である日数を返します。日付/日時の値が記録されているため、抽出する年はありません。 –

1

SELECT ID, hotelName, Address, YearOfEstablishment, (DATEDIFF(YearOfEstablishment, '2010-07-26')/365) AS differenceInYears 
関連する問題