我正在做一个有预订功能的网站。我希望在我当前的日期有一份预订清单。
我的控制器上有以下代码:
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(未知,没有时区的时间戳)不存在 第1行:SELECT&#34; vlts&#34;。* FROM&#34; vlts&#34;在哪里(strftime(&#39;%d /%m /%Y&#39;,日期...... ^ 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。 :SELECT&#34; vlts&#34;。* FROM&#34; vlts&#34; WHERE(strftime(&#39;%d /%m /%Y&#39;,date_time)=&#39; 18/01/208&#39;)
感谢您的帮助。
答案 0 :(得分:0)
strftime
是一个Ruby函数。您无法在数据库查询中调用它。如果要将两个时间戳作为查询中的日期进行比较,则需要使用SQL函数,而不是Ruby函数。