2017-03-21 430 views
2

我有一個原始的sql查詢,它返回一個datetime字段,我想返回一個帶有這些結果的json。Elixir將datetime轉換爲字符串

如果我把返回值,我收到了抱怨:

(Poison.EncodeError) unable to encode value: {{2017, 3, 21}, {0, 0, 0, 0}}

如果我嘗試使用Timex將其轉換爲字符串:

Timex.format!(Ecto.DateTime.from_erl(datetime_field), "%Y-%m-%d %H:%M:%S", :strftime)

我得到:

** (FunctionClauseError) no function clause matching in Ecto.DateTime.from_erl/1

如果我跳過from_erl部分:

Timex.format!(datetime_field, "%Y-%m-%d %H:%M:%S", :strftime)

我得到:

** (Poison.EncodeError) unable to encode value: {:error, :invalid_date}

回答

3

以獲得標準erlang日期時間值需要從第二元組除去第四值(微秒) :

datetime = {{2017, 3, 21}, {0, 0, 0, 0}} 
{{year, month, day}, {hours, minutes, seconds, _}} = datetime 
datetime = {{year, month, day}, {hours, minutes, seconds}} 
Poison.encode! Ecto.DateTime.from_erl(datetime) 
#=> "\"2017-03-21T00:00:00\"" 
+0

wa不會很快找到這個 –