Ruby on rails 如何在rails中删除日期时间的毫秒数?
我必须比较rails中的日期以获得该日期之后的值,我已将日期发送为Ruby on rails 如何在rails中删除日期时间的毫秒数?,ruby-on-rails,ruby-on-rails-3,datetime,Ruby On Rails,Ruby On Rails 3,Datetime,我必须比较rails中的日期以获得该日期之后的值,我已将日期发送为“2013-03-04T06:26:25Z”,但实际上数据库中的记录包含的日期如下2013-03-04 06:26:25.817149,因此当我检查该日期时,它也会返回该记录,但我需要该日期之后的记录。如何从数据库中删除毫秒?请帮帮我。我也有类似的问题 在将时间对象发送到数据库之前,按以下方式更新它: time.change(:usec => 0) 我也有这个问题,但是当我应用更改时,它不会影响我的时间对象的微秒 请注意,
“2013-03-04T06:26:25Z”
,但实际上数据库中的记录包含的日期如下2013-03-04 06:26:25.817149
,因此当我检查该日期时,它也会返回该记录,但我需要该日期之后的记录。如何从数据库中删除毫秒?请帮帮我。我也有类似的问题
在将时间对象发送到数据库之前,按以下方式更新它:
time.change(:usec => 0)
我也有这个问题,但是当我应用更改时,它不会影响我的时间对象的微秒 请注意,
:usec
键(至少目前)仅适用于该方法,不适用于该方法
DateTime#change
方法忽略它不接受的键,因此除非您进一步检查对象(例如使用DateTime#rfc3339(9)
),否则无法判断您尝试的微秒更改是否有效
因此,在尝试此更改之前,请确保您使用的是
Time
对象,而不是DateTime
对象。由于ruby 1.9,您可以使用round
t = Time.now.round
t.usec # => 0
您使用的是哪个数据库?我使用的是postgres…或者如果您知道您用于搜索的时间从来没有毫秒精度,只需改进您的查询和记录查询
=time+1.second
。我们不能指定要保存的格式而不是这样做吗?要保存的格式在您的数据库中定义,可以是DATE,日期时间等。您的ORM将为您将日期转换为正确的格式。我不知道postgres,所以也许您可以将类型更改为不太精确的类型。不,我是想在配置中的某个位置设置strftime(%H%M%S)之类的内容,以便将日期保存为指定格式。您不必处理时间格式,因为ORM会这样做。请参阅postgres中的数据类型。微秒很重要,尤其是在测试时。数据库可能会将微秒截断为预定义的精度,例如Postgres将其设置为6。因此,从数据库读取的值与它在Ruby land中返回的值不匹配,您会得到一个不匹配的值,如:-:completed_at=>2018-07-30 12:27:06.544967008+0000,+:completed_at=>2018-07-30 12:27:06.544967000+0000
。最简单的方法是删除我们将要存储的值中的微秒。然后匹配就可以了,我们不必解决这个截断问题。.round
round,它不仅仅是删除毫秒。因此,在OP示例中,您将得到06:26:25!=06:26:26