Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir Exto获取两个unix时代之间的所有记录_Elixir_Ecto - Fatal编程技术网

Elixir Exto获取两个unix时代之间的所有记录

Elixir Exto获取两个unix时代之间的所有记录,elixir,ecto,Elixir,Ecto,我正在尝试使用我认为非常基本的ecto查询来获取两个unix时间戳之间的记录。大致如下: b = Ecto.DateTime.from_unix!(begin_utc_epoch, :second) |> DateTime.to_naive e = Ecto.DateTime.from_unix!(end_utc_epoch, :second) |> DateTime.to_naive query = from r in MyModel, where r.inserted_at

我正在尝试使用我认为非常基本的ecto查询来获取两个unix时间戳之间的记录。大致如下:

b = Ecto.DateTime.from_unix!(begin_utc_epoch, :second)  |> DateTime.to_naive
e = Ecto.DateTime.from_unix!(end_utc_epoch, :second)  |> DateTime.to_naive
query = from r in MyModel,
where r.inserted_at > ^b and r.inserted_at < ^e
b=exto.DateTime.from_unix!(开始:秒)|>DateTime.to_朴素
e=exto.DateTime.from_unix!(结束utc纪元:秒)|>DateTime.to_朴素
query=来自MyModel中的r,
其中r.inserted\u在“^b”处,r.inserted\u在“^e”处
我得到的只是错误。目前情况是:

(FunctionClauseError)DateTime.to\u naive/1中没有匹配的函数子句


我在某个地方读到,我应该使用NaiveDateTime,所以我一直在尝试转换为NaiveDateTime时间戳。任何帮助都将不胜感激。我肯定我做错了什么,因为它看起来太复杂了。显然,我对长生不老药很陌生。提前感谢。

如果您在处插入的数据类型是NaiveDateTime,则您可以使用日期时间进行转换:

b = DateTime.from_unix!(begin_utc_epoch)  |> DateTime.to_naive
e = DateTime.from_unix!(end_utc_epoch)  |> DateTime.to_naive

query = 
  from r in MyModel,
  where: r.inserted_at > ^b and r.inserted_at < ^e
b=DateTime.from_unix!(begin_utc_epoch)|>DateTime.to_naive
e=DateTime.from_unix!(end_utc_epoch)|>DateTime.to_naive
查询=
从MyModel中的r,
其中:r.inserted\u在“^b”和r.inserted\u在“^e”

我找到了一种相对干净的方法:

b = NaiveDateTime.add(~N[1970-01-01 00:00:00], begin_utc_epoch)
e = NaiveDateTime.add(~N[1970-01-01 00:00:00], end_utc_epoch)
query = from r in MyModel,
    where r.inserted_at > ^b and r.inserted_at < ^e
b=NaiveDateTime.add(~N[1970-01-01 00:00:00],开始utc时代)
e=datetime.add(~N[1970-01-01 00:00:00],utc时代结束)
query=来自MyModel中的r,
其中r.inserted\u在“^b”处,r.inserted\u在“^e”处

搞砸了我的是,我认为查询结果中的时间戳在哪里,exto.DateTimes(不知道符号是什么~N[blah blah]在哪里。它们是天真的时间戳。我在比较苹果和桔子。Doh!

谢谢你的回答。我试过了,它抱怨。我可能使用了不同的版本(我使用的是elixir 1.4.2)或者别的什么。通常,我很忙,必须继续前进。而且,我对埃利克斯和菲尼克斯很陌生,所以我犯了很多愚蠢的错误。所以我可能是站在我这边的