【问题标题】:ERROR: function strftime(unknown, timestamp without time zone) does not exist错误:函数 strftime(未知,没有时区的时间戳)不存在
【发布时间】:2018-06-27 15:55:26
【问题描述】:

我正在做一个具有预订功能的网站。我想查看当前日期的预订清单。

我的控制器上有以下代码:

def today
@vlts = Vlt.where("strftime('%d/%m/%Y', date_time) = ?", Time.now.strftime('%d/%m/%Y'))
end

我认为有以下代码:

<% @vlts.each do |vlt| %>
  <tr>
    <td><%= vlt.date_time %></td>
    <td><%= vlt.name %></td>
    <td><%= vlt.phone_no %></td>
    <td><%= vlt.no_ppl %></td>
    <td><%= vlt.message %></td>
    <td><%= link_to 'Edit', edit_vlt_path(vlt) %></td>
    <td><%= link_to 'Destroy', vlt, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>

但是当我在 http://localhost:3000/today 上运行我的页面时,我收到了以下错误,这让我摸不着头脑。

PG::UndefinedFunction: 错误: 函数 strftime(unknown, timestamp without time zone) 不存在 第 1 行:选择 "vlts".* FROM "vlts" WHERE (strftime('%d/%m/%Y', date... ^ 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。 : SELECT "vlts".* FROM "vlts" WHERE (strftime('%d/%m/%Y', date_time) = '18/01/2018')

感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails rails-activerecord datetime-format


    【解决方案1】:

    strftime 是一个 Ruby 函数。您不能在数据库查询中调用它。如果你想在查询中比较两个时间戳作为日期,你需要使用 SQL 的函数,而不是 Ruby 的。

    How to compare dates in datetime fields in Postgresql?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 2017-10-06
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      相关资源
      最近更新 更多