Ruby datetime подходит для сравнения mysql
Рельсы были хороши с автоматической вставкой правильно отформатированных datetimes в MySql без необходимости, чтобы я много думал об этом.
Однако для выполнения проверки мне нужно проверить, превышает ли хранимое значение mysql datetime (т.е. 2008-07-02 18:00:00) больше или меньше, чем "сейчас". Я могу вызвать DateTime.now
или Time.now
, но как я могу преобразовать это в формат, который нравится mysql?
Спасибо
Ответы
Ответ 1
Вы можете использовать to_s(:db)
для преобразования в формат, дружественный к базе данных.
Time.now.to_s(:db)
Однако будьте осторожны, если у вас есть часовой пояс, указанный в Rails, потому что время будет храниться в UTC в базе данных. Вам нужно указать, что делать правильные сравнения.
Time.now.utc.to_s(:db)
Вы также можете использовать функцию NOW()
в MySQL вместо генерации текущего времени в Ruby.
Ответ 2
Вам не нужно. Пусть Rails выполнит вашу работу:
Если ваша модель Widget
, это найдет все виджеты, созданные в последний день:
Thing.find(:all, :condition => ["created_at > ?", Time.now - 1.day])
Rails автоматически преобразует временную метку в правильный формат.