Кастинг персонажа, изменяющий поле в дате - PullRequest
0 голосов
/ 21 января 2011

У меня есть две таблицы,

details
 id integer primary key
 onsetdate Date

questionnaires
 id integer primary key
 patient_id integer foreign key
 questdate Character Varying

Можно ли сделать оператор SELECT, который выполняет JOIN для этих двух таблиц, упорядочивая по самой ранней дате, взятой из сравнения onsetdate и questdate (можно ли, например, привести квест-дату в поле Date, чтобы сделать это ?)

Типичный формат для квест-даты: "2009-04-22"

В реальных таблицах есть зашифрованное поле BYTEA для onsetdate, но я оставлю эту часть до позже (приложение написано в RoR с использованием 'ezcrypto' для шифрования поля BYTEA).

Ответы [ 3 ]

4 голосов
/ 21 января 2011

что-то вроде

  SELECT...
    FROM details d
    JOIN quesionnaires q ON d.id=q.id
ORDER BY LEAST (decrypt_me(onsetdate), questdate::DATE)

может быть?я не уверен насчет значения 'id', если вы хотите присоединиться к нему или к чему-то еще

Кстати, вы можете опустить явное приведение, это в конце концов в формате ISO.Я думаю, вы знаете, что использовать вместо decrypt_me ()

1 голос
/ 21 января 2011

PostgreSQL поддерживает стандартную функцию SQL CAST ().(И пару других тоже.) Таким образом, вы можете использовать

CAST (questdate AS DATE)

, пока все значения в столбце 'questdate' будут иметь правильную дату.Однако, если эта база данных была в производстве некоторое время, это маловероятно.Не невозможно, но вряд ли.

1 голос
/ 21 января 2011

В postgres есть функция разбора даты: http://www.postgresql.org/docs/9.0/interactive/functions-formatting.html

Найдите функцию to_timestamp.

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