Ruby datetime подходит для сравнения MySQL - PullRequest
34 голосов
/ 10 августа 2009

Rails был хорош тем, что автоматически вставлял правильно отформатированные даты в MySql, и мне не нужно было об этом думать.

Однако для выполнения проверки мне нужно проверить, больше или меньше сохраненное значение даты и времени mysql (т.е. 2008-07-02 18:00:00), чем "сейчас". Я могу позвонить DateTime.now или Time.now, но как я могу преобразовать это в формат, который нравится MySQL?

Спасибо

Ответы [ 2 ]

88 голосов
/ 10 августа 2009

Вы можете использовать to_s(:db) для конвертации в дружественный формат базы данных.

Time.now.to_s(:db)

Однако будьте осторожны, если в Rails указан часовой пояс, потому что время будет храниться в базе данных в формате UTC. Вам нужно будет указать это для правильного сравнения.

Time.now.utc.to_s(:db)

Вы также можете использовать функцию NOW() в MySQL вместо генерации текущего времени в Ruby.

5 голосов
/ 10 августа 2009

Вам не нужно. Пусть Rails сделает всю работу за вас:

Если ваша модель Widget, она найдет все виджеты, созданные за последний день:

Thing.find(:all, :condition => ["created_at > ?", Time.now - 1.day])

Rails автоматически преобразует метку времени в правильный формат.

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