Использование формулы Хаверсина с PostgreSQL и PDO

На своем сайте я пытаюсь найти места поблизости.

Я пытаюсь использовать для этого формулу Хаверсина.

Я использую следующий запрос, чтобы получить все местоположения в радиусе 25 км.

SELECT id, ( 6371 * acos( cos( radians(51.8391) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(4.6265) ) + sin( radians(51.8391) ) * sin( radians( lat ) ) ) ) AS distance
FROM shops
HAVING distance < 25
ORDER BY name asc

Однако я думаю, что некоторые функции могут быть только MySQL, потому что я получаю следующую ошибку:

Предупреждение: PDOStatement :: execute () [pdostatement.execute]: SQLSTATE [42883]: неопределенная функция: 7 ОШИБКА: функция радианы (текст) не существует СТРОКА 1: ... id , (6371 * acos (cos (радианы (51.8391)) * cos (радианы (l ... ^ ПОДСКАЗКА: ни одна функция не соответствует заданному имени и типам аргументов. Возможно, потребуется добавить явное приведение типов. In ...

Или, возможно, это связано с тем, что мне нужно изменить текст lat в моем запросе.Но я не знаю, что это должно быть.

51,8391 и 4,6265 - долгая и широта моей «отправной» точки.

Любая помощь приветствуется, так как я не знаю, что изменить: - )

РЕДАКТИРОВАТЬ

Похоже, проблема в том, где я пытаюсь сделать: радианы (широта) .

широта - столбец в моей таблице.

Когда я пытаюсь используйте rad () , поскольку hakre предположил, что ошибка изменяется на: функция rad (числовой) не существует

РЕДАКТИРОВАТЬ 2

Теперь мы кое-что угадали.

Тип данных столбцы, которые действительно установлены как текст (как предлагает mu, слишком короткие).

Я изменил его на двойную точность.

Однако теперь я получаю другую ошибку:

Предупреждение: PDOStatement :: execute () [pdostatement.execute]: SQLSTATE [42703]: Неопределенный столбец: 7 ОШИБКА: столбец "расстояние" не существует СТРОКА 1: ... adians (lat)))) КАК расстояние ОТ магазинов ИМЕЕТ расстояние <... in ...>

Но я подумал, что сделал псевдоним в выборе. Есть идеи?

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

5
задан Community 23 May 2017 в 12:01
поделиться