2013-03-04 6 views
14

Мне нужно сравнить дату в рельсах, чтобы получить значения после этой даты. Я отправил дату как "2013-03-04T06:26:25Z", но на самом деле запись в db содержит дату следующим образом: 2013-03-04 06:26:25.817149 поэтому, когда я проверяю дату, она также возвращает эту запись, но я хотите записи после этой даты. как я могу удалить миллисекунды из db? пожалуйста помогите.Как удалить миллисекунды с даты в рельсах?

+0

который DB вы используете? – AnkitG

+0

Я использую postgres .... – logesh

+0

Или, если вы знаете, что время, которое вы используете для поиска, никогда не имеет миллисекундной точности, просто улучшите свой запрос и запрос для записей '> = time + 1.second'. –

ответ

24

У меня была аналогичная проблема

Update ваше время объект как перед отправкой его в базу данных:

time.change(:usec => 0) 
+0

Невозможно указать формат для сохранения вместо этого? – logesh

+0

Формат для сохранения определяется в вашей базе данных, это может быть DATE, DATETIME и т. Д. Ваш ORM преобразует дату в нужный формат для вас. Я не знаю postgres, поэтому, возможно, вы можете изменить тип на менее точный. – Intrepidd

+0

Нет, я спрашиваю о настройке какой-то вещи, такой как strftime (% H% M% S) где-то в конфиге, чтобы сохранить дату в указанном формате. – logesh

1

Я тоже с этой проблемой, однако, когда я применяла изменения as indicated in @Intrepidd's answer, его не влияет на микросекунды моего объекта времени.

Пожалуйста, обратите внимание, что (по крайней мере в настоящее время) ключ :usec работает только с помощью метода Time#change и не с методом DateTime#change.

Метод DateTime#change игнорирует ключи, которые он не принимает, поэтому вы не сможете сказать, что попытка изменения микросекунд не была выполнена, если вы не осмотрели объект дальше (например, с DateTime#rfc3339(9)).

Поэтому перед тем, как вы попытаетесь выполнить это изменение, убедитесь, что вы работаете с объектом Time, а не объектом DateTime.

4

С рубина 1.9 вы можете использовать round

t = Time.now.round 
t.useC# => 0 
Смежные вопросы