Skip to content

Instantly share code, notes, and snippets.

@badosu
Created October 5, 2016 23:32
Show Gist options
  • Select an option

  • Save badosu/458e6790c008d504325a6a745b46b6c2 to your computer and use it in GitHub Desktop.

Select an option

Save badosu/458e6790c008d504325a6a745b46b6c2 to your computer and use it in GitHub Desktop.
where(
" availability_days = 'Todos os dias' OR -- Passa todos os dias
availability_days = 'Fim de semana' AND tsrange( -- Passa fim de semana apenas se a data de retirada - sexta as 18 horas, data de retirada - proxima segunda as 10 da manha, incluso em (pickup, return)
(:pickup_date::timestamp::date - cast(extract(dow from :pickup_date::timestamp::date) as int) + 5 + interval '18 hour'),
(:pickup_date::timestamp::date - cast(extract(dow from :pickup_date::timestamp::date) as int) + 8 + interval '10 hour'))
@> tsrange(:pickup_date::timestamp,:return_date::timestamp) OR
availability_days = 'Durante a semana' AND tsrange( -- Passa durante a semana apenas se a data de retirada - segunda 0 da manhã, data de retirada - sabado 0 da manha, incluso em (pickup, return)
(:pickup_date::timestamp::date - cast(extract(dow from :pickup_date::timestamp::date) as int) + 1 + interval '0 hour'),
(:pickup_date::timestamp::date - cast(extract(dow from :pickup_date::timestamp::date) as int) + 6 + interval '0 hour'))
@> tsrange(:pickup_date::timestamp,:return_date::timestamp)",
pickup_date: pickup_date, return_date: return_date)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment