Ruby on Rails显示每个日期的截断日期

时间:2014-10-14 07:46:54

标签: ruby-on-rails ruby sql-server

我正在使用RoR和MSSQL服务器作为数据库,在表中我使用' date '数据类型保存日期。

RoR正确保存日期,例如,如果我正在保存2012-10-20然后它正在保存2012-10-20但是当我在前面显示它时显示为2012-10-02 2013-10-20 ,2012-10-01 for 2013-10-10,2012-10-01 for 2013-10-15 etc。

出了什么问题......我无法弄清楚

修改

我不是要求日期格式化技术。问题是日期没有正确保存,因为它保存在数据库中,如果我使用datatime数据类型而不是date数据类型,那么一切正常。

3 个答案:

答案 0 :(得分:0)

您如何在视图中显示它?

例如,以下内容将显示“2010年1月”

<%= @user.created_at.strftime("%B %Y") %>

你可能想要年,月,日?所以%Y%m%d

答案 1 :(得分:0)

你应该这样做:

<%= @user.created_at.strftime("%Y-%m-%d") %>

或者如果您希望它更具可读性,那么:

<%= @user.created_at.to_date %>

你可以尝试两种你喜欢的方式

修改

你必须这样做,否则你必须创建一个新属性来存储日期。 created_at是默认timestamp类型See this link。您可以使用以下任意一种方式将created_at转换为date或将新的column引入table

答案 2 :(得分:0)

根据适配器的github page

  

日期/时间数据类型提示

     

SQL Server 2005不包含日期或日期的本机数据类型   时间,它只有日期时间。要通过ActiveRecord测试我们   实现了两个简单的类方法,可以教你的模型   强制要正确转换列信息。只需传递清单即可   符号到coerce_sqlserver_date或coerce_sqlserver_time   对应于&#39; datetime&#39;的方法需要强制转换的列   正确。

class Topic < ActiveRecord::Base
  coerce_sqlserver_date :last_read
  coerce_sqlserver_time :bonus_time
end

这应该指向正确的方向