Вычитание в SQL заявление - PullRequest
0 голосов
/ 27 ноября 2011

Законен ли этот оператор SQL?

     SELECT  firstName, lastName
     FROM  Presidents 
     WHERE  (endTerm-beginTerm)>4;

Мне нужно найти президентов, срок полномочий которых превышает 4 года.Могу ли я использовать «-» в этом запросе?если нет, то каков хороший способ?

типы данных endTerm и beginTerm

Ответы [ 3 ]

4 голосов
/ 27 ноября 2011

Добавьте 4 года на beginTerm, затем сравните

SELECT  firstName, lastName
     FROM  Presidents 
     WHERE  endTerm > DATE_ADD(beginTerm, INTERVAL 4 YEAR)

Это обычно (включая использование других СУБД) безопаснее, чем вычитание или вычисление разницы дат из-за того, как обрабатываются границы между периодами.

2 голосов
/ 27 ноября 2011

Ваш запрос правильный.:-) Однако, если endTerm и beginTerm являются значениями DATETIME, вы можете сравнить их с INTERVAL 4 YEARS

1 голос
/ 27 ноября 2011

Да, если тип столбца endterm и beginterm принимает вычитание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...