2011-08-03 59 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