ACCESS SQL - объединение двух таблиц по значениям Datetime - PullRequest
0 голосов
/ 12 июля 2020

У меня проблема с объединением 2 таблиц со значениями даты и времени в Access. Я попытался объединить таблицы, просто установив

LEFT JOIN Table1.Datetime=Table2.Datetime

Однако вывод моего запроса действительно отключен. Затем я попытался присоединиться, разделив даты:

LEFT JOIN YEAR(Table1.Datetime)=YEAR(Table2.Datetime)
AND MONTH(Table1.Datetime)=MONTH(Table2.Datetime)
AND DAY(Table1.Datetime)=DAY(Table2.Datetime)
AND HOUR(Table1.Datetime)=HOUR(Table2.Datetime)

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

LEFT JOIN Table1.Datetime>=Table2.Datetime
AND Table1.Datetime<Table2.Datetime + 1/24

У меня заканчиваются идеи для эффективной работы моего соединения, любая помощь будет очень признательна!

1 Ответ

0 голосов
/ 12 июля 2020

DateTime основан на Double , и вы не можете просто проверить такие значения на равенство из-за потенциальных ошибок с плавающей запятой.

Попробуйте что-то вроде этого:

LEFT JOIN Abs(Table1.Datetime-Table2.Datetime) < #00:00:01#

или:

LEFT JOIN DateDiff("s", Table1.Datetime, Table2.Datetime) = 0

или:

LEFT JOIN Format(Table1.Datetime, yyyymmddhhnnss") = Format(Table2.Datetime, yyyymmddhhnnss")

Однако они могут быть слишком медленными. Если это так, присоединитесь к двум простым запросам выбора, по одному для каждой таблицы, имея:

Format(Table1.Datetime, "yyyymmddhhnnss") As TextTime  - and
Format(Table2.Datetime, "yyyymmddhhnnss") As TextTime

, а затем присоединитесь к

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