Skip to content

Instantly share code, notes, and snippets.

@bryanl
Created June 1, 2009 17:39
Show Gist options
  • Select an option

  • Save bryanl/121616 to your computer and use it in GitHub Desktop.

Select an option

Save bryanl/121616 to your computer and use it in GitHub Desktop.
def event_sql()
%q{events.id, events.user_id, events.name, events.description,
CONVERT_TZ( CASE
WHEN recur_unit = 'mweek' THEN
NWEEKDAY_DATETIME(
today_time + INTERVAL IF(DAY(now_time) > NWEEKDAY_DAY(now_time, recur_every), 1, 0) MONTH,
recur_every
)
WHEN recur_unit = 'month' THEN
today_time - INTERVAL (DAY(today_time) - DAY(start_time)) DAY
+ INTERVAL (IF(DAY(today_time) > DAY(start_time) AND (YEARMONTHINT(start_time) - YEARMONTHINT(today_time)) MOD recur_every = 0,
recur_every*2, recur_every) + (YEARMONTHINT(start_time) - YEARMONTHINT(today_time)) MOD recur_every) MONTH
WHEN recur_unit = 'day' THEN
IF(start_time > today_time, start_time,
today_time + INTERVAL (recur_every + DATEDIFF(start_time, today_time) MOD recur_every) DAY)
ELSE
start_time
END, events.timezone, 'UTC'
) AS start_time, events.category, events.subgroup_id, events.group_id, events.location,
events.created_at, events.deleted_at, events.commentable, events.rsvpable, events.sent_email_blast,
events.duration, CONVERT_TZ(events.recur_until, events.timezone, 'UTC') recur_until,
events.recur_unit, events.recur_every, events.external_rsvp, events.updated_at,
events.description_format, events.master_id, events.master_flags, events.timezone}
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment