我如何在Ruby中使用数天和数月?

时间:2012-01-14 01:35:16

标签: mysql ruby date activerecord

我有在数据库表中创建文章的日期。我从八月到今天都有文章。

我尝试在ActiveRecord中创建一个SQL查询,以获取今天创建的文章。

例如,今天是1月14日,我试图将那些于9月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

但这并没有返回正确的陈述,因为文章于12月14日和10月14日发布。这个查询什么也没有给我回复。

1 个答案:

答案 0 :(得分:1)

你正在过度思考这个问题。假设created_at是正常的日期时间/时间戳字段,您应该使用created_atDAY()转换为当天,然后将其直接与普通的Ruby Date对象进行比较。

day = Date.today

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

# or just...

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

(最初误读你的问题;回答更新。)