2016-06-17 2 views
0

Я новичок в SQL и мне нужен запрос, чтобы объединить две таблицы с конкретными таблицами двух климатических и погодных условиях являются: Таблица 1:Объединение двух таблиц по дате-времени SQL

visitIp   serverTimePretty lastActionDateTime 
66.87.114.131 8/12/2015 22:59  8/13/2015 2:59 
66.87.114.131 8/12/2015 20:32  8/13/2015 0:32 
66.87.114.131 8/12/2015 19:34  8/12/2015 23:34 
66.87.114.131 12/13/2015 17:36 12/13/2015 22:36 
66.87.114.131 4/23/2016 10:25  4/23/2016 14:27 

Table2:

IPAddress StartDate 
66.86.114.131 4/23/2016 8:25 
66.70.114.131 4/23/2016 8:25 
66.71.114.131 4/23/2016 8:25 
66.72.114.131 4/23/2016 8:25 
66.87.114.131 4/23/2016 8:25 

Адрес Ip ​​является основным ключом в Tabe 2, и он ссылается на VisitIp в Tabe 1. Теперь мне нужны столбцы, где Table1.visitIp = Table2.IPAddress и Table1.serverTimePretty - Table2.StartDate> = 2 часа. Для этого был бы SQL-запрос.

+2

Какие РСУБД? У вас есть 3 метки. – JiggsJedi

+0

Какие РСУБД? У вас есть 3 метки. –

+0

База данных Oracle –

ответ

1

Вы можете сделать это, как показано ниже в SQL сервере, используя DATEDIFF для часов части:

SELECT t1.*, t2.* 
FROM Table_1 t1 INNER JOIN Table_2 t2 
    ON t1.visitIp = t2.IPAddress AND 
     DATEDIFF(hour, t1.serverTimePretty, t2.StartDate) >= 2 

EDIT

As ранее вы не указали, какой тип базы данных вы используете. Для оракула будет использоваться следующий запрос: Oracle напрямую предоставляет вам возможность делать вычитание между двумя датами:

SELECT t1.*, t2.* 
FROM Table_1 t1 INNER JOIN Table_2 t2 
    ON t1.visitIp = t2.IPAddress AND 
     floor((date1-date2)*24) >= 2 
+0

В нем написано: Нет такой колонки: час –

+0

Даже если я запустил ее как отдельную инструкцию, дающую ту же ошибку. SELECT DATEDIFF (час, '2014-06-05', '2014-08-05'). Принимал это от w3schools и показывал ту же ошибку. –

+0

По-видимому, DATEDIFF не работает для Oracle Database –

0

Использование DATE_ADD() с INTERVAL 2 HOUR в вашем условия соединения:

SELECT t1.*, t2.* 
FROM Table_1 t1 INNER JOIN Table_2 t2 
    ON t1.visitIp = t2.IPAddress AND 
     t1.serverTimePretty >= DATE_ADD(t2.StartDate, INTERVAL 2 HOUR) 
+0

В ней показана некоторая синтаксическая ошибка. Его в состоянии согласования даты, когда я запускаю его без части И, он отлично работает –

+0

Я дал вам ответ MySQL. Ответ будет другим в SQL Server или Oracle. –

+0

o ok ,,, попробуй это –

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