2013-06-13 1 views
1

У меня есть огромная таблица из 2.000.000 строк, в которой у меня есть два столбца, которые являются датами. Теперь я хочу, чтобы найти все те строки, в которых разница между этими двумя датами составляет> 30. я уже установил запрос такого рода:dateiff в mysql выбрать новое поле только в том случае, если определенное значение

SELECT DATEDIFF(date1, date2) as new 
FROM table1; 

и он работает, и перечислить все результаты и показывает разницу. Теперь я хотел бы иметь в результате только те случаи, когда разница между двумя датами выше 30, а также есть доказательства этого числа.

Я попытался

SELECT DATEDIFF(date1, date2) >30 as new 
FROM table1; 

Но в результате в колонке нового я всегда значение 1 (который я думаю, стендами для TRUE), но мне нужно, чтобы увидеть эту разницу (число: 31, 32, 33 экз.).

Может кто-нибудь, пожалуйста, помогите мне?

спасибо

+0

Выберите галочку слева от вашего ответа принятого, не просто переименовать название с (ЗАКРЫТО). Выбор ответа автоматически * закрывает * вопрос. – BLaZuRE

ответ

0

Если я не ошибаюсь, попробуйте SELECT datediff(date1, date2) AS new FROM table1 WHERE new > 30;

> оператор может быть использован как логическое значение и сравнивает ваш datediff() и ваш 30. Вот почему вы должны поместить его в инструкцию WHERE, чтобы исключить логическое значение в вашем выборе.

0
select datediff(date1;date2) >30 as new from table1 

дает значения: 1, потому что он возвращает то, является ли datediff(date1;date2) > 30 истинным или нет!

Попробуйте


SELECT datediff(date1;date2) as new FROM table WHERE datediff(date1;date2) >30;

0
SELECT DATEDIFF(date1, date2) as new 
FROM table1 
WHERE DATEDIFF(date1, date2) > 30; 
+0

Спасибо Olivier, но возвращает NULL – user1951561

+0

Что это значит? Является ли ваш набор результатов пустым или одной строкой с единственным значением NULL? –

+0

Привет, Оливье, я снова записал его; он отлично работает, спасибо большое – user1951561

 Смежные вопросы

  • Нет связанных вопросов^_^