mysql - rails 电子邮件发送代码明天需要 days + 2,这是为什么?

标签 mysql ruby-on-rails ruby activerecord

我有一个循环来为明天选择“LibrarySwaps”。

这有效,但当我将 days_ahead 默认设置为 1 时无效(它返回具有今天日期的记录)。

为什么我需要在日期上加 2 才能得到一天而不是 future 只有 1 天? 我在美国东部时间上午 11 点做这件事,所以这不是时区问题,UTC 都是同一天……我想也许是因为一侧有时间成分而另一侧没有,但不,我正在使用date() 对于 sql 和 Date + 1.days 对于 ruby​​。我可能会切换到(一个日期减去另一个日期)并查看结果。

谢谢!

Returns Tomorrows (uses 2):
  def self.find_future_swaps(days_ahead=2)
    @upcoming_swaps = LibrarySwap.all(:conditions => ['date(suggested_date) = ?',Date.today + days_ahead.day ])
  end

Returns Todays (uses 1):
  def self.find_future_swaps(days_ahead=1)
    @upcoming_swaps = LibrarySwap.all(:conditions => ['date(suggested_date) = ?',Date.today + days_ahead.day ])
  end

最佳答案

MySQL 可能以 UTC 格式存储您的 suggested_date 字段。因此,从 4 月 29 日晚上 10 点开始的条目实际上将存储为 4 月 30 日凌晨 3 点(假设您在东部时区)。

您可以这样做以将偏移量添加到您正在搜索的时间:

    @upcoming_swaps = LibrarySwap.all(:conditions => ['date(convert_tz(suggested_date,'+00:00','-05:00')) = ?',Date.today + days_ahead.day ])

关于mysql - rails 电子邮件发送代码明天需要 days + 2,这是为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5833690/

相关文章:

Ruby正则表达式匹配方法

sql - 如何选择由其他一些列值组成的列

php - 当存在多个条件时,如何在mysql中统一三个不同的查询?

php - (Yii)CDbCommand执行SQL语句失败: SQLSTATE[42000]: Syntax error or access violation:

ruby-on-rails - 如何修复 heroku 上的 ActionDispatch::Cookies::CookieOverflow 错误?

ruby-on-rails - 停止阅读 erb

java - jpa persist() 函数在 TABLE_PER_TENANT (multi_schema) Multi-Tenancy 策略中给出错误

sql - 查找关联计数大于零的所有记录

ruby-on-rails - cucumber 命令将只打印出功能和场景名称

mysql - Ruby On Rails 保存到数据库多个表