2
在我的SQLite-DB中,我想在星期一選擇所有條目。如何使用sqlite/sequel選擇星期一?
我該如何與續集做到這一點?
的實驗例:
require 'sequel'
DB = Sequel.sqlite()#'test.db')
DB.create_table(:days) do
String :text
Date :start
end
Date.today.upto(Date.today + 30){|d|
DB[:days].insert(:text => d.strftime("%Y-%m-%d day %w in week %W"), :start => d)
}
如何可以選擇所有星期一?
在本地SQL I can do:
select * from days where strftime("%w", start) = "1"
利用這一點,我可以定義一個視圖,並選擇它:
DB.run('create view mondays as select * from days where strftime("%w", start) = "1"')
p DB[:mondays].all
但我想從續集中使用它。
我試圖
sel = DB[:days].filter{ start.strftime("%w", :start) == '1' }
#NoMethodError
sel = DB[:days].filter{ Sequel::SQL::Function.new(:strftime, "%w", :start) == '1' }
#SELECT * FROM `days` WHERE (1 = 0)
但沒有成功。
還有其他解決方案嗎?
我正在尋找一種可能性,以按天選擇項目(所有項目與時間戳,然後從12:00-13:00 ...)我認爲這是相同的問題和解決方案爲期一週的選擇也將解決我的其他問題。
再次感謝。我認爲它一定是我嘗試過的東西,但我沒有關於塊內散列的想法。 – knut
我試過你的解決方案,但在我的'真實案例'中,我使用了'DateTime'而不是'Date'。如果在我的示例中插入'd = DateTime.parse(d.strftime(「%F%m:%d」))''之前,它不起作用。我實際做了一些實驗,也許有一個後續問題。 – knut
好的,我找到了解決方案。我必須添加:'DB.use_timestamp_timezones = false'。背景信息在[續集]中(http://osdir.com/ml/sequel-talk/2011-09/msg00014.html)。一次出行:必須在添加內容之前完成設置(不起作用,如果您已添加了具有時區設置的條目)。 – knut