@@ -13,7 +13,7 @@ module Rel8.Expr.Time
1313 , diffTime
1414 , subtractTime
1515
16− -- * Working with @NominalDiffTime@
16+ -- * Working with @CalendarDiffTime@
1717 , scaleInterval
1818 , second, seconds
1919 , minute, minutes
@@ -35,7 +35,8 @@ import Rel8.Expr.Opaleye ( unsafeCastExpr, unsafeLiteral )
3535
3636-- time
3737import Data.Time.Calendar ( Day )
38−import Data.Time.Clock ( NominalDiffTime, UTCTime )
38+import Data.Time.Clock ( UTCTime )
39+import Data.Time.LocalTime ( CalendarDiffTime )
3940
4041
4142-- | Corresponds to @date(now())@.
@@ -74,93 +75,93 @@ now = nullaryFunction "now"
7475
7576
7677-- | Add a time interval to a point in time, yielding a new point in time.
77−addTime :: Expr NominalDiffTime -> Expr UTCTime -> Expr UTCTime
78+addTime :: Expr CalendarDiffTime -> Expr UTCTime -> Expr UTCTime
7879addTime = flip (binaryOperator "+")
7980
8081
8182-- | Find the duration between two times.
82−diffTime :: Expr UTCTime -> Expr UTCTime -> Expr NominalDiffTime
83+diffTime :: Expr UTCTime -> Expr UTCTime -> Expr CalendarDiffTime
8384diffTime = binaryOperator "-"
8485
8586
8687-- | Subtract a time interval from a point in time, yielding a new point in time.
87−subtractTime :: Expr NominalDiffTime -> Expr UTCTime -> Expr UTCTime
88+subtractTime :: Expr CalendarDiffTime -> Expr UTCTime -> Expr UTCTime
8889subtractTime = flip (binaryOperator "-")
8990
9091
91−scaleInterval :: Expr Double -> Expr NominalDiffTime -> Expr NominalDiffTime
92+scaleInterval :: Expr Double -> Expr CalendarDiffTime -> Expr CalendarDiffTime
9293scaleInterval = binaryOperator "*"
9394
9495
9596-- | An interval of one second.
96−second :: Expr NominalDiffTime
97+second :: Expr CalendarDiffTime
9798second = singleton "second"
9899
99100
100101-- | Create a literal interval from a number of seconds.
101−seconds :: Expr Double -> Expr NominalDiffTime
102+seconds :: Expr Double -> Expr CalendarDiffTime
102103seconds = (`scaleInterval` second)
103104
104105
105106-- | An interval of one minute.
106−minute :: Expr NominalDiffTime
107+minute :: Expr CalendarDiffTime
107108minute = singleton "minute"
108109
109110
110111-- | Create a literal interval from a number of minutes.
111−minutes :: Expr Double -> Expr NominalDiffTime
112+minutes :: Expr Double -> Expr CalendarDiffTime
112113minutes = (`scaleInterval` minute)
113114
114115
115116-- | An interval of one hour.
116−hour :: Expr NominalDiffTime
117+hour :: Expr CalendarDiffTime
117118hour = singleton "hour"
118119
119120
120121-- | Create a literal interval from a number of hours.
121−hours :: Expr Double -> Expr NominalDiffTime
122+hours :: Expr Double -> Expr CalendarDiffTime
122123hours = (`scaleInterval` hour)
123124
124125
125126-- | An interval of one day.
126−day :: Expr NominalDiffTime
127+day :: Expr CalendarDiffTime
127128day = singleton "day"
128129
129130
130131-- | Create a literal interval from a number of days.
131−days :: Expr Double -> Expr NominalDiffTime
132+days :: Expr Double -> Expr CalendarDiffTime
132133days = (`scaleInterval` day)
133134
134135
135136-- | An interval of one week.
136−week :: Expr NominalDiffTime
137+week :: Expr CalendarDiffTime
137138week = singleton "week"
138139
139140
140141-- | Create a literal interval from a number of weeks.
141−weeks :: Expr Double -> Expr NominalDiffTime
142+weeks :: Expr Double -> Expr CalendarDiffTime
142143weeks = (`scaleInterval` week)
143144
144145
145146-- | An interval of one month.
146−month :: Expr NominalDiffTime
147+month :: Expr CalendarDiffTime
147148month = singleton "month"
148149
149150
150151-- | Create a literal interval from a number of months.
151−months :: Expr Double -> Expr NominalDiffTime
152+months :: Expr Double -> Expr CalendarDiffTime
152153months = (`scaleInterval` month)
153154
154155
155156-- | An interval of one year.
156−year :: Expr NominalDiffTime
157+year :: Expr CalendarDiffTime
157158year = singleton "year"
158159
159160
160161-- | Create a literal interval from a number of years.
161−years :: Expr Double -> Expr NominalDiffTime
162+years :: Expr Double -> Expr CalendarDiffTime
162163years = (`scaleInterval` year)
163164
164165
165−singleton :: String -> Expr NominalDiffTime
166+singleton :: String -> Expr CalendarDiffTime
166167singleton unit = unsafeLiteral $ "'1 " ++ unit ++ "'"