【问题标题】:Elixir Ecto Phoenix - Comparing string date format "YYYY-MM-DD" with #DateTime<2017-12-01 13:31:14.987000Z>Elixir Ecto Phoenix - 比较字符串日期格式“YYYY-MM-DD”与#DateTime<2017-12-01 13:31:14.987000Z>
【发布时间】:2019-09-18 04:57:37
【问题描述】:

我试图在我的 Ecto 查询中实现一个日期范围,其中日期范围是格式为 "YYYY-MM-DD" 的字符串日期,并且数据库中相应的 created_at 日期是 #DateTime&lt;2017-12-01 13:31:14.987000Z&gt; 格式。

我已经设置了范围比较查询,我唯一的问题是弄清楚如何将我的日期字符串转换为相同的 #DateTime 格式。

【问题讨论】:

    标签: date datetime elixir phoenix-framework ecto


    【解决方案1】:

    您可以使用DateTime.from_iso8601/1

    date = "2015-01-23"
    case DateTime.from_iso8601("#{date}T00:00:00Z") do
        {:error, error} -> error
        {:ok, dt} -> 
                     # .... do stuff 
    end
    

    如果您需要处理日期和时间、格式、解析等,您可以查看Timex,因为它涵盖了很多与日期和时间相关的常见内容。

    【讨论】:

    • 这并没有解决在 ecto 查询中转换字符串数组的问题
    • @AlxVallejo 确实,我必须把我的魔法球寄回去才能退款。我试图回答这个问题:仅限...my only problem is in figuring out how to cast my date strings into the same #DateTime format。我假设问题中的范围只是意味着,我有一个开始和结束日期作为字符串。无论如何,最好的方法可能是,不要,只在查询中使用片段和数据库自己的日期转换/格式化函数?很难说...
    猜你喜欢
    • 1970-01-01
    • 2013-07-04
    • 2010-09-22
    • 2018-07-31
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    相关资源
    最近更新 更多