2011-08-03 76 views
0

我有一個名爲Hotel的MySQL表。因爲我有以下字段IDhotelName,Address,YearOfEstablishment發出SQL語句的問題

YearOfEstablishmentDate類型,它將存儲日期爲2010-12-26。我需要做的是找出日期之間的差異,併爲此SQL如下;

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

以上查詢答案將在幾天給出,例如像在2個日期之間的差異可能是120天,我需要在Years顯示這一點。就像將120的值除以365並給出年數。我如何爲此編寫SQL語句?

2.)現在我需要編寫另一個SQL,它將顯示所有Hotel表列和Year difference values(上面已解釋)。我如何爲此編寫SQL?

(我使用MySQL)

+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

什麼是你的第二個答案的完整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