我正在使用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数据类型,那么一切正常。
答案 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
这应该指向正确的方向