`

Rails中的时区和Mysql查询问题

阅读更多
如果,在你的Rails项目中数据库的设置是如下:
config.active_record.default_timezone = :utc#Rails2.1
config.time_zone = 'UTC'#rails 2.3

那么通常情况下,这时你就要注意你的Rails查询中的时区问题了。

例如,通常的查询如下:
User.count(:conditions => ['created_at BETWEEN ? 
                        AND ?',some_day.beginning_of_day, 
                        some_day.end_of_day])

这时候是不用特别注明时区的。可是如果,有如下的显示的时候。
some_day.beginning_of_day
#>e.g. 00:00 on March 26th CET

你就应该用如下的方式查询
User.count(:conditions => ['created_at BETWEEN ? 
             AND ?', some_day.beginning_of_day.utc, 
             some_day.end_of_day.utc])


然而,如果你有另外的需求,希望通过本地的local时间来group那么,你需要的就是如下的类似查询:
User.count(:group => 'DATE(CONVERT_TZ(created_at, "UTC", "CET"))')

也就是说,如果不这样写的话默认的就会用UTC的时间来分组,很可能就是你在3月26号00:59 CET创建的记录,就会分组到25号了。

那么,如何设置Mysql的时区呢,如下:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql


Mac如下

mysql_tzinfo_to_sql5 /usr/share/zoneinfo | mysql -u root mysql


当然你也完全不必转换,那么你需要在程序里转UTC或特别处理
0
0
分享到:
评论

相关推荐

    Ruby on Rails网站项目构建简单指南

    - 这条命令用于创建一个名为`blog`的新Rails项目,并通过`--skip-bundle`参数跳过自动安装依赖的过程,避免因RubyGems服务器访问速度慢而导致的问题。 - **Gemfile配置**: 在项目创建完毕后,需修改`Gemfile`文件...

    RedMine1.2.1安装

    RedMine是一款开源的项目管理软件,它基于Ruby on Rails框架构建,提供了问题追踪、项目文档管理、时间跟踪、版本控制以及多种项目的协作功能。在本文中,我们将详细讲解如何安装RedMine1.2.1版本。 一、系统需求 ...

    返回系统时间.rar

    - **MySQL**:在SQL查询中,`SELECT NOW();`可以获取服务器当前的日期和时间。 - **PostgreSQL**:同理,`SELECT NOW();`也适用于PostgreSQL。 - **MongoDB**:在MongoDB的JavaScript shell中,`new Date()`返回...

    redmine-1.2.2tar.gz

    13. **文档和社区**:在安装和使用过程中,你可以参考官方文档或在线社区的资源,解决遇到的问题。1.2.2版本可能有一些已知问题,社区的经验和解决方案会非常有帮助。 总结,"redmine-1.2.2.tar.gz"是一个用于部署...

    Redmine用户手册

    1. 讨论:在问题、任务或项目中发起讨论,支持富文本编辑和附件上传。 2. 通知与邮件:用户可以订阅项目更新,系统会通过邮件通知相关变动。 3. 甘特图:显示项目计划和进度的图形化视图,便于直观掌握任务关系和...

    redmine-v2.0.1.tar.gz

    2. **安装依赖**:Redmine 需要一些特定的库和软件,如 Ruby、RubyGems、SQLite3、Nokogiri 和其他 Rails 相关的 gem。在终端中运行相应的包管理器命令(例如,对于 Debian/Ubuntu 系统是 `apt-get`,对于 CentOS/...

    Redmine管理员手册

    1. 安装环境:Redmine通常需要一个支持Ruby on Rails的Web服务器,如Apache或Nginx,以及数据库服务器(如MySQL或PostgreSQL)。 2. 安装过程:包括下载源码、安装依赖库、配置数据库连接、创建数据库、运行初始化...

    restaurante网站

    5. **数据库(Database)**:Rails默认使用SQLite,但也可以配置为使用MySQL、PostgreSQL等其他数据库。数据库配置在`config/database.yml`文件中。在这个项目中,可能有`restaurants`、`menus`、`dishes`等数据库表...

    scheduled_tweets

    10. **错误处理与日志记录**: 使用`Logger`或第三方库如`Airbrake`进行错误报告和日志记录,以便追踪和修复问题。 这些知识点构成了一个预定推文系统的整体框架,展示了如何使用Ruby来实现这个功能,并提供了可能的...

    alpha-blog

    在"Alpha-blog"项目中,我们可以预见到它可能利用Ruby on Rails框架来构建,这是一个非常流行且高效的Web开发框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和代码的可读性。 在"alpha-blog-main...

    calendar-backend:我正在处理的约会日历应用程序的后端

    需要考虑数据的关联性和查询效率。 3. **RESTful API**:为了与前端交互,后端需要提供RESTful API接口。这些接口应遵循HTTP协议标准,如GET用于获取数据,POST用于创建新资源,PUT用于更新资源,DELETE用于删除...

    scheduler:基于Web的约会计划程序

    9. **时间区管理**:考虑到全球用户可能存在的时区差异,程序需要能够正确处理和显示不同地区的日期和时间。 10. **实时更新与推送通知**:为了让用户及时得知新的预约或变更,程序可能需要实现实时更新功能,如...

    TravelIn

    这涉及到多语言支持、货币转换和时区适应等功能。 综上所述,"TravelIn"项目涵盖了从前端到后端,从设计到实施的多个IT知识点,涉及移动应用开发、用户界面设计、地理信息系统、API集成、安全性和数据分析等多个...

Global site tag (gtag.js) - Google Analytics