Как мне работать с днями и месяцами в Ruby? - PullRequest
0 голосов
/ 14 января 2012

У меня есть дата создания статьи в таблице БД. У меня есть статьи с августа по сегодняшний день.

Я пытался создать SQL-запрос в ActiveRecord, чтобы получить статьи, которые были созданы сегодня.

Например, сегодня 14 января, и я пытался получить те статьи, которые были созданы 14 августа, 14 сентября, до сегодняшнего дня.

Я пробовал что-то вроде этого:

today = Date.today
day = today.strftime('%d')
day_next = (today + 1.day).strftime('%d')

Article.where('created_at >= ? AND created_at <= ?', day, day_next) #day = 14, day_next = 15

Но это не возвращает правильного утверждения, потому что статьи были опубликованы 14 декабря и 14 октября. Этот запрос мне ничего не возвращает.

1 Ответ

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

Вы думаете об этом. Предполагая, что created_at является обычным полем даты / времени, вы должны просто преобразовать created_at в его день, используя DAY(), а затем сравнить его непосредственно с обычным объектом Ruby Date.

day = Date.today

Article.where 'DAY( created_at ) = DAY( ? )', day

# or just...

Article.where 'DAY( created_at ) = DAY( CURRENT_DATE() )'

(Первоначально неправильно прочитал ваш вопрос; ответ обновлен.)

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