Как найти ближайшие даты в FileMaker с помощью SQL

#sql #date #filemaker #closest

Вопрос:

Окончательный способ найти наиболее близкое совпадение дат между 2 таблицами Привет, у меня есть школьный проект, в котором я должен добавить математически выведенные дни к высоким и низким датам, а затем оценить полученный поворотный момент для моих исторических результатов. У меня есть три таблицы в FileMaker 19:

HighLowData с датой поворота поля

Математика, которая содержит 20 формул

Поворотные точки, которые создаются из сценария, зацикливающего математические формулы с помощью HighLowDate::TurnDate.

Таким образом, каждый HighLowDate::TurnDate приводит к 20 записям TurningPoints::cTPdate.

У меня есть поле в cLookup точек поворота, в котором я хочу рассчитать ближайшую дату поворота в HighLowData к моей дате CTP.

Я попытался выполнить SQL ( «ВЫБЕРИТЕ ДАТУ ПОВОРОТА ИЗ СПИСКА ДАННЫХ, ЧТОБЫ СОЕДИНИТЬ ТОЧКИ поворота ПО ПОРЯДКУ ABS (ДАТА поворота::Дата поворота — ТОЧКИ поворота::cTPdate), ИЗВЛЕКИТЕ ТОЛЬКО ПЕРВУЮ 1 СТРОКУ»; «»;»»)

Я признаю, что SQL находится вне моей зоны комфорта. Есть ли другой способ выполнить задачу или мой SQL можно привести в порядок для работы? Я понимаю, что DATEDIFF не работает с FileMaker.

Я попробовал LookupNext, но он просто вернул фактическую дату поворота для выбранной строки. Заранее спасибо

Ответ №1:

SQL-это нормально. Я бы использовал другой подход.

Начнем с

 ExecuteSQL
("SELECT cTPdate 
  FROM TurningPoints
  WHERE cTPdate >=?
  ORDER BY cTPdate DESC
  FETCH FIRST 1 ROW ONLY
"; 

"";"";HighLowDate::TurnDate)
 

Это даст вам самое близкое совпадение в будущем.

Переверните запрос, и вы получите самое близкое совпадение в прошлом

Затем вы можете сравнить разницу между этими двумя днями и вашей датой и получить наиболее близкое совпадение.

Если вам нужно в качестве калькулятора, вы можете использовать оператор Let