小编Dye*_*517的帖子

如何在长生不老药中获得上个月

如何在不使用 elixir 中的包或库的情况下获得上个月的数据?

例如,如果当前日期是2018-01-25,我将得到2017-12-25。或者如果当前日期是2018-03-31,我会得到2018-02-28(2018 年不是闰年)

erlang datetime calendar elixir

4
推荐指数
1
解决办法
1358
查看次数

从Ecto数据库中获取随机记录

是否可以仅使用纯Ecto查询从数据库中获取10个随机记录,而不是在应用程序端?例如,我不想从数据库中获取所有记录,然后在Elixir中获取它们的随机值(如下所示):

Subscribers
|> Repo.all
|> Enum.take_random(10)
Run Code Online (Sandbox Code Playgroud)

postgresql elixir ecto

2
推荐指数
1
解决办法
457
查看次数

下个月到达Elixir

Aleksei回答的最后一个问题中,我试图查找给定日期的上个月。现在,我正尝试做相反的事情:

defmodule Dating do
  def next_month(%Date{year: year, month: month, day: day} = date) do
    first_day_of_next_month = Date.add(date, Calendar.ISO.days_in_month(year, month) - day + 1)
    %{year: year, month: month} = first_day_of_next_month
    Date.add(first_day_of_next_month, min(day, Calendar.ISO.days_in_month(year, month)) - 1)
  end
end
Run Code Online (Sandbox Code Playgroud)

尽管代码可以正常运行,但我希望有更好的方法可以做到这一点:

iex|1 ? Dating.next_month(~D[2018-12-31])
#? ~D[2019-01-31]
iex|2 ? Dating.next_month(~D[2018-02-28])
#? ~D[2018-03-28]
iex|3 ? Dating.next_month(~D[2018-01-31])
#? ~D[2018-02-28]
iex|3 ? Dating.next_month(~D[2018-01-30])
#? ~D[2018-02-28]
Run Code Online (Sandbox Code Playgroud)

注意:请不要建议使用第三方Elixir软件包

erlang datetime calendar date elixir

1
推荐指数
1
解决办法
277
查看次数

标签 统计

elixir ×3

calendar ×2

datetime ×2

erlang ×2

date ×1

ecto ×1

postgresql ×1