2017-10-28 161 views
1

我有兩列duration(整數)和start_time(時間)。選擇時間列和整數列的總和小於current_time

我必須選擇start_time和duration的總和大於current_time

這樣的事情 -

Availability.where("start_time + duration < current_time")
如何做到這一點?我使用的是Postgres中的Ruby-on-Rails的

回答

3

要將integer添加到time,你可能會想通過指定的單位和鑄造到integerinterval轉換。如果duration以分鐘爲單位,則:

start_time + (duration || ' minutes')::interval > current_time 

如果duration爲秒鐘,然後:

start_time + (duration || ' seconds')::interval > current_time 

注意||是SQL字符串連接運算符。

你可以把其中的一個成where電話:

Availability.where("start_time + (duration || ' seconds')::interval > current_time") 

記住'23:00'::time + '2 hours'::interval01:00:00(即time S環繞四周在午夜),所以你可能需要包括取決於日期組件是什麼數據看起來像什麼,具體需求是什麼。