2017-03-21 6 views
2

datetime 필드를 반환하는 raw sql 쿼리가 있는데이 결과가있는 json을 반환하려고합니다.날짜 문자열을 문자열로 변환하는

(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 조만간 이걸 찾아 낼거야. –