2011-03-29 180 views
0

我有一個具有開始時間的日程模型,日期時間爲持續時間以分鐘爲單位,整數爲使用命名範圍

使用命名範圍是否有一種方法可以獲得有(start_time + duration) < current_time的記錄?

+0

MYSQL條件需要像WHERE(ADDTIME(scheduled_start_time,duration_in_min)<'2011-03-29 06:55:02')。但是,如果持續時間是123即123分鐘,而不是將其作爲2小時和3分鐘......它將1分23秒添加到我的表中的scheduled_start_time – ssri 2011-03-29 07:03:29

回答

2

你可以實現你的要求與SQL水平日期操作功能,如mysql's DATE_ADD

scope :not_over, where('DATE_ADD(start_time, INTERVAL duration MINUTE) > UTC_TIMESTAMP()') 

但如果性能是一個考慮因素,你可能要預先計算的「END_TIME」列,並添加一個索引上它。

+0

start_time採用日期時間格式,持續時間爲整數 – ssri 2011-03-29 06:49:56

+0

哦,對不起,應該有一些數據庫特定的答案,讓我看看 – thatothermitch 2011-03-29 06:50:40

+1

你應該使用'UTC_TIMESTAMP()'而不是'NOW()' – Zabba 2011-03-29 06:58:38