Equivalent of strftime in Postgres

2020-02-01 16:15发布

After migrating my SQLite database to Postgres on the development server, I get the

PG::UndefinedFunction: ERROR:  function strftime(unknown, date) does not exist

Is there a function I could use to keep the functionality across my app?

Edit: tried using to_char but failed miserably. In particular, I do not understand how to implement it in a construction such as

def self.query_by_year_month(y, m)
  where("strftime('%Y', date) = ? and strftime('%m', date) = ?", y, m)
end

Thank you!

3条回答
Melony?
2楼-- · 2020-02-01 16:46

Looks like it is a great time to start learning SQL! Made my method work using the following code:

  def self.query_by_year_month(y, m)
    where("extract(year from date) = ? and extract(month from date) = ?", y, m)
  end
查看更多
狗以群分
3楼-- · 2020-02-01 16:58

Your best bet might be to_char().

One alternative is to implement the behavior of strftime() as a user-defined function. (Named "strftime", of course.)

查看更多
男人必须洒脱
4楼-- · 2020-02-01 17:03

You probably want to use date_part(). See the documentation here http://www.postgresql.org/docs/9.1/static/functions-datetime.html

查看更多
登录 后发表回答