使用SET将复杂的SQL查询转换为Arel或Squeel

如何使用AREL或Squeel翻译给定查询:

SET @start = '2013-05-14'; SET @end = '2013-11-01'; SET @days = DATEDIFF(@end, @start); SET @UnusedDays = 0; SELECT @UnusedDays := DATEDIFF(end_at,@end) FROM PERIODS WHERE (@end > start_at AND @end = start_at AND @start = start_at AND @start < end_at) OR (end_at  @start) OR (@end > start_at AND @end <= end_at); 

将它用作原始SQL的解决方案也将受到欢迎,因为到目前为止我无法运行它。

更新:在SQL请求中描述期间模型和目标, 以查找是否完全覆盖了期间

UPDATE2:如果我尝试使用原始的SQL查询,如:

 query = %Q[ SET @start = '2013-05-14'; SET @end = '2013-11-01'; SET @days = DATEDIFF(@end, @start); SET @UnusedDays = 0; SELECT @UnusedDays := DATEDIFF(end_at,@end) FROM PERIODS WHERE (@end > start_at AND @end = start_at AND @start = start_at AND @start < end_at) OR (end_at  @start) OR (@end > start_at AND @end <= end_at); ] Period.connection.select_all(query).first.map{|k,v| v }.first == 0 

我收到以下错误:

 ActiveRecord::StatementInvalid: Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET @end = '2013-11-01';