【发布时间】:2019-04-12 12:16:09
【问题描述】:
我正在尝试输入日期时间,因为 insert_all 不会自动添加 created_dates,我无法弄清楚我做错了什么。
currentTime = DateTime.utc_now
query = from rm in ChatApp.Roles.RoleMasters,
join: srp in ChatApp.Servers.ServerTypeParameters,
where: srp.parameter_role_capable_flag == "Y",
select: %{role_master_id: rm.id, server_type_code: srp.server_type_code, parameter_namespace: srp.parameter_namespace,
parameter: srp.parameter, parameter_value: srp.parameter_default_value,
user_changeable_flag: "Y", description: srp.description,
active_flag: "Y", created_date: ^currentTime}
roleMasterRows = ChatApp.Repo.all(query)
ChatApp.Repo.insert_all(ChatApp.Roles.RoleMasterParameters, roleMasterRows)
我的错误信息如下所示:
值
{{2017, 5, 10}, {20, 28, 42, 0}}为ChatApp.Roles.RoleMasterParameters.created_date在insert_all中 不匹配类型:utc_datetime
在 ecto.schema 中,它将日期时间转换为元组,但我不知道为什么它不喜欢我的。
我被卡住了,我浏览了 Ecto.Schema 代码,它看起来需要元组,但我显然遗漏了一些东西,谢谢!
【问题讨论】:
-
迁移和架构文件中的默认 timestamp() 调用不是 UTC。确保两者相同。
timestamps(type: :utc_datetime)在迁移文件和架构文件中。 -
我很欣赏这个评论,但我已经解决了这个问题!我没有使用 Ecto.Schema 类我已经编写了一个宏来更改 timestamps_opts 以更改类型。
标签: elixir phoenix-framework ecto