Выполнять операции с датой в запросе - PullRequest
0 голосов
/ 04 января 2012

Моя таблица базы данных содержит start_time (тип date time) и duration (тип integer, что означает часы).

Я хочу выполнить запрос, чтобы найти все записи, где start_time + duration раньше Time.now.

Можно ли выполнить операцию добавления и операцию сравнения в одном запросе? Или мне сначала нужно прочитать запись, преобразовать ее в рельсы и провести там сравнение?

Псевдокод выглядит следующим образом:

@surveys = Survey.find_by_sql("select * from surveys where start_time  + duration < :now", :now => Time.now)

Ответы [ 2 ]

1 голос
/ 04 января 2012

технически говоря, да, вы могли бы сделать это так, как вы это делаете, однако вы должны использовать функции datetime, специфичные для вашей базы данных (которые вы не указали)

0 голосов
/ 04 января 2012

если вы используете ms-sql-сервер, конвертируйте время в число с плавающей запятой, оно будет основано на 1,0 = 1 день.

выберите * из таблицы, где (CONVERT (FLOAT, start_time) + длительность /24.0)

должен получить то, что вы хотите.

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