[英]Rails Activerecord where date from 20 to 20
我只需要展示一個月20號到下個月20號之間的作品(每個月20號到20號)
我看到兩種情況:
1.- 如果我在任何一個月的 15 歲(或低於 20 歲),我必須從上個月的 20 日到今天顯示。
2.- 如果我在任何一個月的 25 歲(或高於 20 歲),我必須從本月 20 日到今天顯示。
我不知道類似這樣的東西的語法
if Date.today.day > 20
@works = Work.where(created_at: "20 of this month to Date.today")
else
@works = Work.where(created_at: "20 of last month to Date.today")
end
date = Date.today.change(day: 20)
date -= 1.month if date > Date.today
@works = Work.where(created_at: date..(date + 1.month))
根據您的具體要求,最后一個條件可以是以下任何一種:
date..(date + 1.month)
date...(date + 1.month)
date..date.today
date...date.today
我做過一次這樣的事情(這是從 memory 寫的,未經測試)
if Date.today.day > 20
start_day = Date.new(Date.today.year, Date.today.month, 20)
end_day = start_day + 1.month
else
start_day = Date.new(Date.today.year, Date.today.month, 20) - 1.month
end_day = Date.new(Date.today.year, Date.today.month, 20)
end
Work.where(created_at: start_day..end_day)
它看起來像這樣:
# The ".." sets a range, (from)..(to)
if Date.today.day > 20
@works = Work.where(created_at: (Date.today - 20)..(Date.today))
else
@works = Work.where(created_at: (Date.today.change(day: 20))..(Date.today))
end
您可能還想查看文檔以了解其他 DateTime 計算:)
謝謝大家,我接受了你的想法和這項工作
if Date.today.day > 20
@works = Work.where(created_at: ((Date.new((Date.today.year),(Date.today.month),21)))..Date.today)
else
@works = Work.where(created_at: ((Date.new((Date.today.year),(Date.today.month),21)) - 1.month)..Date.today)
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.