Skip to content

Instantly share code, notes, and snippets.

@xblitz
Created April 7, 2017 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xblitz/8fcb14a1f55d3082354a604178648357 to your computer and use it in GitHub Desktop.
Save xblitz/8fcb14a1f55d3082354a604178648357 to your computer and use it in GitHub Desktop.
psycopg2 DateRange functions to determine overlapping range and number of days
def daterange_overlap(range1, range2):
"""returns the overlapping DateRange of 2 DateRanges, DateRange(None, None) if no overlap"""
lower = max([range1.lower or datetime.date.min, range2.lower or datetime.date.min])
upper = min([range1.upper or datetime.date.max, range2.upper or datetime.date.max])
return DateRange(None if lower == datetime.date.min else lower, None if upper == datetime.date.max else upper)
def daterange_days(date_range):
return (date_range.upper - date_range.lower).days
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment