PostgreSQL has a Data Type named Range
Range types are data types representing a range of values of some
element type (called the range's subtype). For instance, ranges of
timestamp might be used to represent the ranges of time that a meeting
room is reserved. In this case the data type is tsrange (short for
“timestamp range”), and timestamp is the subtype. The subtype must
have a total order so that it is well-defined whether element values
are within, before, or after a range of values.
and one of the built-in range types is
tstzrange
— Range of timestamp with time zone, tstzmultirange
— corresponding Multirange
Doobie has an extension for PostgreSQL that offer support for
There is an open issue to add support for Range type that was open on Jul 4, 2019
and the last activity was on Jul 29, 2019
.
If you look at the unit test of postgres module for postgres types named TypeSuite, you will see the following lines where all range types are not being checked:
// 8.17 Range Types
skip("int4range")
skip("int8range")
skip("numrange")
skip("tsrange")
skip("tstzrange")
skip("daterange")
skip("custom")
In this case, I think you will need to use the Custom Mappings that doobie has. I was able to find a gist
that creates a custom mapping for tsrange which is pretty close to what you need. Also in the open issue mentioned before, there is a suggestion about how custom mapping for ranges can be done.