interval.exs (21132B)
1 defmodule Ecto.Integration.IntervalTest do 2 use Ecto.Integration.Case, async: Application.compile_env(:ecto, :async_integration_tests, true) 3 4 alias Ecto.Integration.{Post, User, Usec} 5 alias Ecto.Integration.TestRepo 6 import Ecto.Query 7 8 @posted ~D[2014-01-01] 9 @inserted_at ~N[2014-01-01 02:00:00] 10 11 setup do 12 TestRepo.insert!(%Post{posted: @posted, inserted_at: @inserted_at}) 13 :ok 14 end 15 16 test "date_add with year" do 17 dec = Decimal.new(1) 18 assert [~D[2015-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, 1, "year")) 19 assert [~D[2015-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, 1.0, "year")) 20 assert [~D[2015-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^1, "year")) 21 assert [~D[2015-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^1.0, "year")) 22 assert [~D[2015-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^dec, "year")) 23 end 24 25 test "date_add with month" do 26 dec = Decimal.new(3) 27 assert [~D[2014-04-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, 3, "month")) 28 assert [~D[2014-04-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, 3.0, "month")) 29 assert [~D[2014-04-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^3, "month")) 30 assert [~D[2014-04-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^3.0, "month")) 31 assert [~D[2014-04-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^dec, "month")) 32 end 33 34 test "date_add with week" do 35 dec = Decimal.new(3) 36 assert [~D[2014-01-22]] = TestRepo.all(from p in Post, select: date_add(p.posted, 3, "week")) 37 assert [~D[2014-01-22]] = TestRepo.all(from p in Post, select: date_add(p.posted, 3.0, "week")) 38 assert [~D[2014-01-22]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^3, "week")) 39 assert [~D[2014-01-22]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^3.0, "week")) 40 assert [~D[2014-01-22]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^dec, "week")) 41 end 42 43 test "date_add with day" do 44 dec = Decimal.new(5) 45 assert [~D[2014-01-06]] = TestRepo.all(from p in Post, select: date_add(p.posted, 5, "day")) 46 assert [~D[2014-01-06]] = TestRepo.all(from p in Post, select: date_add(p.posted, 5.0, "day")) 47 assert [~D[2014-01-06]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^5, "day")) 48 assert [~D[2014-01-06]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^5.0, "day")) 49 assert [~D[2014-01-06]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^dec, "day")) 50 end 51 52 test "date_add with hour" do 53 dec = Decimal.new(48) 54 assert [~D[2014-01-03]] = TestRepo.all(from p in Post, select: date_add(p.posted, 48, "hour")) 55 assert [~D[2014-01-03]] = TestRepo.all(from p in Post, select: date_add(p.posted, 48.0, "hour")) 56 assert [~D[2014-01-03]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^48, "hour")) 57 assert [~D[2014-01-03]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^48.0, "hour")) 58 assert [~D[2014-01-03]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^dec, "hour")) 59 end 60 61 test "date_add with dynamic" do 62 posted = @posted 63 assert [~D[2015-01-01]] = TestRepo.all(from p in Post, select: date_add(^posted, ^1, ^"year")) 64 assert [~D[2014-04-01]] = TestRepo.all(from p in Post, select: date_add(^posted, ^3, ^"month")) 65 assert [~D[2014-01-22]] = TestRepo.all(from p in Post, select: date_add(^posted, ^3, ^"week")) 66 assert [~D[2014-01-06]] = TestRepo.all(from p in Post, select: date_add(^posted, ^5, ^"day")) 67 assert [~D[2014-01-03]] = TestRepo.all(from p in Post, select: date_add(^posted, ^48, ^"hour")) 68 end 69 70 test "date_add with negative interval" do 71 dec = Decimal.new(-1) 72 assert [~D[2013-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, -1, "year")) 73 assert [~D[2013-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, -1.0, "year")) 74 assert [~D[2013-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^-1, "year")) 75 assert [~D[2013-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^-1.0, "year")) 76 assert [~D[2013-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^dec, "year")) 77 end 78 79 test "datetime_add with year" do 80 dec = Decimal.new(1) 81 assert [~N[2015-01-01 02:00:00]] = 82 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 1, "year")) 83 assert [~N[2015-01-01 02:00:00]] = 84 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 1.0, "year")) 85 assert [~N[2015-01-01 02:00:00]] = 86 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^1, "year")) 87 assert [~N[2015-01-01 02:00:00]] = 88 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^1.0, "year")) 89 assert [~N[2015-01-01 02:00:00]] = 90 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "year")) 91 end 92 93 test "datetime_add with month" do 94 dec = Decimal.new(3) 95 assert [~N[2014-04-01 02:00:00]] = 96 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 3, "month")) 97 assert [~N[2014-04-01 02:00:00]] = 98 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 3.0, "month")) 99 assert [~N[2014-04-01 02:00:00]] = 100 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^3, "month")) 101 assert [~N[2014-04-01 02:00:00]] = 102 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^3.0, "month")) 103 assert [~N[2014-04-01 02:00:00]] = 104 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "month")) 105 end 106 107 test "datetime_add with week" do 108 dec = Decimal.new(3) 109 assert [~N[2014-01-22 02:00:00]] = 110 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 3, "week")) 111 assert [~N[2014-01-22 02:00:00]] = 112 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 3.0, "week")) 113 assert [~N[2014-01-22 02:00:00]] = 114 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^3, "week")) 115 assert [~N[2014-01-22 02:00:00]] = 116 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^3.0, "week")) 117 assert [~N[2014-01-22 02:00:00]] = 118 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "week")) 119 end 120 121 test "datetime_add with day" do 122 dec = Decimal.new(5) 123 assert [~N[2014-01-06 02:00:00]] = 124 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 5, "day")) 125 assert [~N[2014-01-06 02:00:00]] = 126 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 5.0, "day")) 127 assert [~N[2014-01-06 02:00:00]] = 128 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^5, "day")) 129 assert [~N[2014-01-06 02:00:00]] = 130 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^5.0, "day")) 131 assert [~N[2014-01-06 02:00:00]] = 132 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "day")) 133 end 134 135 test "datetime_add with hour" do 136 dec = Decimal.new(60) 137 assert [~N[2014-01-03 14:00:00]] = 138 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 60, "hour")) 139 assert [~N[2014-01-03 14:00:00]] = 140 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 60.0, "hour")) 141 assert [~N[2014-01-03 14:00:00]] = 142 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^60, "hour")) 143 assert [~N[2014-01-03 14:00:00]] = 144 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^60.0, "hour")) 145 assert [~N[2014-01-03 14:00:00]] = 146 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "hour")) 147 end 148 149 test "datetime_add with minute" do 150 dec = Decimal.new(90) 151 assert [~N[2014-01-01 03:30:00]] = 152 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 90, "minute")) 153 assert [~N[2014-01-01 03:30:00]] = 154 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 90.0, "minute")) 155 assert [~N[2014-01-01 03:30:00]] = 156 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^90, "minute")) 157 assert [~N[2014-01-01 03:30:00]] = 158 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^90.0, "minute")) 159 assert [~N[2014-01-01 03:30:00]] = 160 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "minute")) 161 end 162 163 test "datetime_add with second" do 164 dec = Decimal.new(90) 165 assert [~N[2014-01-01 02:01:30]] = 166 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 90, "second")) 167 assert [~N[2014-01-01 02:01:30]] = 168 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 90.0, "second")) 169 assert [~N[2014-01-01 02:01:30]] = 170 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^90, "second")) 171 assert [~N[2014-01-01 02:01:30]] = 172 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^90.0, "second")) 173 assert [~N[2014-01-01 02:01:30]] = 174 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "second")) 175 end 176 177 @tag :uses_msec 178 test "datetime_add with millisecond" do 179 dec = Decimal.new(1500) 180 assert [~N[2014-01-01 02:00:01]] = 181 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 1500, "millisecond")) 182 assert [~N[2014-01-01 02:00:01]] = 183 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 1500.0, "millisecond")) 184 assert [~N[2014-01-01 02:00:01]] = 185 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^1500, "millisecond")) 186 assert [~N[2014-01-01 02:00:01]] = 187 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^1500.0, "millisecond")) 188 assert [~N[2014-01-01 02:00:01]] = 189 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "millisecond")) 190 end 191 192 @tag :microsecond_precision 193 @tag :uses_usec 194 test "datetime_add with microsecond" do 195 dec = Decimal.new(1500) 196 assert [~N[2014-01-01 02:00:00]] = 197 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 1500, "microsecond")) 198 assert [~N[2014-01-01 02:00:00]] = 199 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 1500.0, "microsecond")) 200 assert [~N[2014-01-01 02:00:00]] = 201 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^1500, "microsecond")) 202 assert [~N[2014-01-01 02:00:00]] = 203 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^1500.0, "microsecond")) 204 assert [~N[2014-01-01 02:00:00]] = 205 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "microsecond")) 206 end 207 208 test "datetime_add with dynamic" do 209 inserted_at = @inserted_at 210 assert [~N[2015-01-01 02:00:00]] = 211 TestRepo.all(from p in Post, select: datetime_add(^inserted_at, ^1, ^"year")) 212 assert [~N[2014-04-01 02:00:00]] = 213 TestRepo.all(from p in Post, select: datetime_add(^inserted_at, ^3, ^"month")) 214 assert [~N[2014-01-22 02:00:00]] = 215 TestRepo.all(from p in Post, select: datetime_add(^inserted_at, ^3, ^"week")) 216 assert [~N[2014-01-06 02:00:00]] = 217 TestRepo.all(from p in Post, select: datetime_add(^inserted_at, ^5, ^"day")) 218 assert [~N[2014-01-03 14:00:00]] = 219 TestRepo.all(from p in Post, select: datetime_add(^inserted_at, ^60, ^"hour")) 220 assert [~N[2014-01-01 03:30:00]] = 221 TestRepo.all(from p in Post, select: datetime_add(^inserted_at, ^90, ^"minute")) 222 assert [~N[2014-01-01 02:01:30]] = 223 TestRepo.all(from p in Post, select: datetime_add(^inserted_at, ^90, ^"second")) 224 end 225 226 test "datetime_add with dynamic in filters" do 227 inserted_at = @inserted_at 228 field = :inserted_at 229 assert [_] = 230 TestRepo.all(from p in Post, where: p.inserted_at > datetime_add(^inserted_at, ^-1, "year")) 231 assert [_] = 232 TestRepo.all(from p in Post, where: p.inserted_at > datetime_add(^inserted_at, -3, "month")) 233 assert [_] = 234 TestRepo.all(from p in Post, where: field(p, ^field) > datetime_add(^inserted_at, ^-3, ^"week")) 235 assert [_] = 236 TestRepo.all(from p in Post, where: field(p, ^field) > datetime_add(^inserted_at, -5, ^"day")) 237 end 238 239 test "datetime_add with negative interval" do 240 dec = Decimal.new(-1) 241 assert [~N[2013-01-01 02:00:00]] = 242 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, -1, "year")) 243 assert [~N[2013-01-01 02:00:00]] = 244 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, -1.0, "year")) 245 assert [~N[2013-01-01 02:00:00]] = 246 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^-1, "year")) 247 assert [~N[2013-01-01 02:00:00]] = 248 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^-1.0, "year")) 249 assert [~N[2013-01-01 02:00:00]] = 250 TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "year")) 251 end 252 253 test "from_now" do 254 current = DateTime.utc_now().year 255 dec = Decimal.new(5) 256 assert [%{year: year}] = TestRepo.all(from p in Post, select: from_now(5, "year")) 257 assert year > current 258 assert [%{year: year}] = TestRepo.all(from p in Post, select: from_now(5.0, "year")) 259 assert year > current 260 assert [%{year: year}] = TestRepo.all(from p in Post, select: from_now(^5, "year")) 261 assert year > current 262 assert [%{year: year}] = TestRepo.all(from p in Post, select: from_now(^5.0, "year")) 263 assert year > current 264 assert [%{year: year}] = TestRepo.all(from p in Post, select: from_now(^dec, "year")) 265 assert year > current 266 end 267 268 test "ago" do 269 current = DateTime.utc_now().year 270 dec = Decimal.new(5) 271 assert [%{year: year}] = TestRepo.all(from p in Post, select: ago(5, "year")) 272 assert year < current 273 assert [%{year: year}] = TestRepo.all(from p in Post, select: ago(5.0, "year")) 274 assert year < current 275 assert [%{year: year}] = TestRepo.all(from p in Post, select: ago(^5, "year")) 276 assert year < current 277 assert [%{year: year}] = TestRepo.all(from p in Post, select: ago(^5.0, "year")) 278 assert year < current 279 assert [%{year: year}] = TestRepo.all(from p in Post, select: ago(^dec, "year")) 280 assert year < current 281 end 282 283 test "datetime_add with utc_datetime" do 284 {:ok, datetime} = DateTime.from_naive(@inserted_at, "Etc/UTC") 285 TestRepo.insert!(%User{inserted_at: datetime}) 286 287 {:ok, datetime} = DateTime.from_naive(~N[2015-01-01 02:00:00], "Etc/UTC") 288 dec = Decimal.new(1) 289 290 assert [^datetime] = 291 TestRepo.all(from p in User, select: datetime_add(type(^datetime, :utc_datetime), 0, "year")) 292 assert [^datetime] = 293 TestRepo.all(from p in User, select: datetime_add(p.inserted_at, 1, "year")) 294 assert [^datetime] = 295 TestRepo.all(from p in User, select: datetime_add(p.inserted_at, 1.0, "year")) 296 assert [^datetime] = 297 TestRepo.all(from p in User, select: datetime_add(p.inserted_at, ^1, "year")) 298 assert [^datetime] = 299 TestRepo.all(from p in User, select: datetime_add(p.inserted_at, ^1.0, "year")) 300 assert [^datetime] = 301 TestRepo.all(from p in User, select: datetime_add(p.inserted_at, ^dec, "year")) 302 end 303 304 @tag :microsecond_precision 305 test "datetime_add with naive_datetime_usec" do 306 TestRepo.insert!(%Usec{naive_datetime_usec: ~N[2014-01-01 02:00:00.000001]}) 307 datetime = ~N[2014-01-01 02:00:00.001501] 308 309 assert [^datetime] = 310 TestRepo.all(from u in Usec, select: datetime_add(type(^datetime, :naive_datetime_usec), 0, "microsecond")) 311 assert [^datetime] = 312 TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, 1500, "microsecond")) 313 assert [^datetime] = 314 TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, 1500.0, "microsecond")) 315 assert [^datetime] = 316 TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, ^1500, "microsecond")) 317 end 318 319 @tag :microsecond_precision 320 @tag :decimal_precision 321 test "datetime_add with naive_datetime_usec and decimal increment" do 322 TestRepo.insert!(%Usec{naive_datetime_usec: ~N[2014-01-01 02:00:00.000001]}) 323 dec = Decimal.new(1500) 324 datetime = ~N[2014-01-01 02:00:00.001501] 325 326 assert [^datetime] = 327 TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, ^1500.0, "microsecond")) 328 assert [^datetime] = 329 TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, ^dec, "microsecond")) 330 end 331 332 @tag :microsecond_precision 333 test "datetime_add with utc_datetime_usec" do 334 {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.000001], "Etc/UTC") 335 TestRepo.insert!(%Usec{utc_datetime_usec: datetime}) 336 337 {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.001501], "Etc/UTC") 338 339 assert [^datetime] = 340 TestRepo.all(from u in Usec, select: datetime_add(type(^datetime, :utc_datetime_usec), 0, "microsecond")) 341 assert [^datetime] = 342 TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, 1500, "microsecond")) 343 assert [^datetime] = 344 TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, 1500.0, "microsecond")) 345 assert [^datetime] = 346 TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, ^1500, "microsecond")) 347 end 348 349 @tag :microsecond_precision 350 @tag :decimal_precision 351 test "datetime_add uses utc_datetime_usec with decimal increment" do 352 {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.000001], "Etc/UTC") 353 TestRepo.insert!(%Usec{utc_datetime_usec: datetime}) 354 355 {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.001501], "Etc/UTC") 356 dec = Decimal.new(1500) 357 358 assert [^datetime] = 359 TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, ^1500.0, "microsecond")) 360 assert [^datetime] = 361 TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, ^dec, "microsecond")) 362 end 363 364 test "datetime_add with utc_datetime_usec in milliseconds" do 365 {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.001000], "Etc/UTC") 366 TestRepo.insert!(%Usec{utc_datetime_usec: datetime}) 367 368 {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.151000], "Etc/UTC") 369 370 assert [^datetime] = 371 TestRepo.all(from u in Usec, select: datetime_add(type(^datetime, :utc_datetime_usec), 0, "millisecond")) 372 assert [^datetime] = 373 TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, 150, "millisecond")) 374 assert [^datetime] = 375 TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, 150, "millisecond")) 376 assert [^datetime] = 377 TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, ^150, "millisecond")) 378 end 379 380 @tag :decimal_precision 381 test "datetime_add uses utc_datetime_usec with decimal increment in milliseconds" do 382 {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.001000], "Etc/UTC") 383 TestRepo.insert!(%Usec{utc_datetime_usec: datetime}) 384 385 {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.151000], "Etc/UTC") 386 dec = Decimal.new(150) 387 388 assert [^datetime] = 389 TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, ^150.0, "millisecond")) 390 assert [^datetime] = 391 TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, ^dec, "millisecond")) 392 end 393 394 test "datetime_add with naive_datetime_usec in milliseconds" do 395 TestRepo.insert!(%Usec{naive_datetime_usec: ~N[2014-01-01 02:00:00.001000]}) 396 datetime = ~N[2014-01-01 02:00:00.151000] 397 398 assert [^datetime] = 399 TestRepo.all(from u in Usec, select: datetime_add(type(^datetime, :naive_datetime_usec), 0, "millisecond")) 400 assert [^datetime] = 401 TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, 150, "millisecond")) 402 assert [^datetime] = 403 TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, 150.0, "millisecond")) 404 assert [^datetime] = 405 TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, ^150, "millisecond")) 406 end 407 408 @tag :decimal_precision 409 test "datetime_add with naive_datetime_usec and decimal increment in milliseconds" do 410 TestRepo.insert!(%Usec{naive_datetime_usec: ~N[2014-01-01 02:00:00.001000]}) 411 dec = Decimal.new(150) 412 datetime = ~N[2014-01-01 02:00:00.151000] 413 414 assert [^datetime] = 415 TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, ^150.0, "millisecond")) 416 assert [^datetime] = 417 TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, ^dec, "millisecond")) 418 end 419 end