在 Ruby on Rails 中,DateTime、Timestamp、Time 和 Date 之间有什么区别?

2024-03-13

根据我的经验,在编程时获得正确的日期/时间总是充满危险和困难。

Ruby 和 Rails 在这方面一直让我困惑,只是因为有太多的选择;我从来不知道我应该选择哪个。

当我使用 Rails 并查看 ActiveRecord 数据类型时,我可以找到以下内容

:日期时间、:时间戳、:时间和:日期

并且不知道差异是什么或陷阱潜伏在哪里。

有什么不同?你用它们做什么?

(P.S.我使用的是Rails3)


ActiveRecord 中不同日期/时间格式之间的差异与 Rails 关系不大,而与您使用的任何数据库有关。

以 MySQL 为例(如果没有其他原因,因为它是最流行的),你有DATE, DATETIME, TIME and TIMESTAMP列数据类型;就像你一样CHAR, VARCHAR, FLOAT and INTEGER.

那么,你问,有什么区别?嗯,其中一些是不言自明的。DATE只存储日期,TIME只存储一天中的某个时间,而DATETIME两者都存储。

和...之间的不同DATETIME and TIMESTAMP有点微妙:DATETIME格式为YYYY-MM-DD HH:MM:SS。有效范围从 1000 年到 9999 年(以及之间的所有内容)。TIMESTAMP looks类似,当你从数据库中获取它时,它实际上只是一个前面Unix 时间戳 http://en.wikipedia.org/wiki/Unix_time。它的有效范围是从1970年到2038年。这里的区别除了数据库引擎内的各种内置功能之外,还在于存储空间。因为DATETIME存储年、月、日、时、分、秒的每一位数字,总共占用8个字节。作为TIMESTAMP仅存储自 1970-01-01 以来的秒数,它使用 4 个字节。

您可以阅读更多有关 MySQL 中时间格式之间的差异的信息here http://dev.mysql.com/doc/refman/5.1/en/date-and-time-types.html.

最后,这取决于您需要日期/时间列执行的操作:

  • 您需要存储 1970 年之前或 2038 年之后的日期和时间吗? => 使用DATETIME.
  • 您是否需要担心数据库大小并且您在该时间范围内? => 使用TIMESTAMP.
  • 您只需要存储日期吗? => 使用DATE.
  • 你只需要存储一个时间吗? => 使用TIME.

说了这么多,Rails 实际上为您做出了其中一些决定. Both :timestamp and :datetime将默认为DATETIME, while :date and :time对应于DATE and TIME, 分别。

这意味着在 Rails 中,您只需决定是否需要存储日期、时间或两者都存储。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Ruby on Rails 中,DateTime、Timestamp、Time 和 Date 之间有什么区别? 的相关文章

  • 我在 apache 中使用乘客 for Rails 时收到 403 错误

    我已经安装了所需的工具 并遵循了几个教程 试图让乘客做出回应 我可以访问公共文件夹 public 500 html 或 422 hml 中的静态文件 昨天我通过虚拟主机进入 发现一些乘客错误 但一段时间后 托管重新启动了服务 从那时起我就无
  • Python 中 datetime.timedelta 的人类可读日期时间间隔?

    我发现自己经常需要在 python 配置文件中指定时间跨度 有没有一种方法可以让我在带有 stdlib 的 python 配置文件中指定更易读的时间范围 类似于 PostgreSQL 的 Interval 语法 或者这需要第三方库吗 澄清我
  • 如何:使用 SQL Server 2008 创建自动更新修改日期的触发器

    很高兴知道如何创建一个自动更新的触发器modifiedDate我的 SQL Server 表中的列 Table 时间输入 Id PK UserId FK Description Time GenDate ModDate 触发代码 TR Ti
  • 在 Rails 3.2 + SimpleForm 中显示嵌套表单有错误的字段

    我有一个Flight模型嵌套在一个FlightLog模型 AFlightLog可能包含许多航班 我使用 SimpleForm 进行引导安装 这样当验证失败时 可以用错误类包围带有错误的表单元素 问题是 即使触发了嵌套模型的验证 simple
  • Facebook API 错误 100 - 无效链接

    我正在使用 Facebook API 在我的 Rails 应用程序中创建发送对话框 我只是在 Javascript 中使用 Facebook 推荐的格式 作为 HTML 中的脚本 我的问题是我得到 API Error code 100 in
  • 抑制 Rspec 3 的回溯

    我正在使用 rspec 3 2 0 和 capybara 2 4 4 并在我的 spec helper rb 文件中如下所示 config full backtrace false 对于大多数错误 我都会得到回溯 例如 Failure Er
  • Rails 3 默认作用域、可覆盖的作用域

    我遇到的情况是现有应用程序的行为正在发生变化 这让我非常头疼 我的应用程序有照片 照片有一个状态 batch queue or complete 应用程序中的所有现有照片都是 完整的 99 的情况下 我只需要显示完整的照片 并且在所有现有代
  • Bootstrap shown.bs.tab 事件不起作用

    我正在使用灵活的模板 http the8guild com themes html flexy v1 7 stylesPage html 使用引导程序 并且我无法让选项卡上的 shown bs tab 事件正常工作 我已经成功让它发挥作用J
  • 同一模型之间的两个 has_many 链接

    I have users其中有products通过 habtm 链接 该链接正在运行 我想添加一个链接user模型和product模型 以跟踪creator该产品的 当然 谁并不总是拥有该产品 但是当我写在我的user and produc
  • 强参数不起作用

    使用 Ruby 1 9 3 Rails 3 2 13 Strong parameters 0 2 1 我遵循了教程和railscasts中的每一个指示 但我无法让strong parameters工作 这应该是非常简单的事情 但我看不出错误
  • 日期/时间转换:字符串表示形式为 time_t [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何转换日期字符串 格式为 MM DD YY HH MM SS to a time tC 或 C 中的值 Use strptime 将
  • PHP - 如何从添加日期算起 60 天

    让我知道 add date date Y m d H m s expiry date how 如何插入到数据库 expiry date60 天 mysql 格式是日期时间 Use strtotime http php net manual
  • 使用月份、年份、星期几和周数计算月份中的某一天

    如何在 PHP 中计算月份中的某一天 并给出月份 年份 星期几和周数 例如 如果我有 2013 年 9 月 星期几是星期五 周数是 2 那么我应该得到 6 2013 年 9 月 6 日是第二周的星期五 实现此目的的一种方法是使用相对格式 h
  • Android L,使用 joda.time 库的异常

    该应用程序适用于所有设备 包括 nexus 5 和 nexus 7 在 Android L 预览版上运行相同的应用程序时 应用程序崩溃了 我一直在调试 并且调用 DateTime 构造函数发现了异常 public static String
  • 我们能否知道回形针下载何时完成?

    我有一个应用程序 我需要知道用户的 Rails Paperclip 文件下载时间complete 我的应用程序设置为与 Amazon S3 交互 当用户收到完整的文件时 我需要运行 JavaScript 函数 我怎样才能做到这一点 跟踪天气
  • Ruby on Rails - 设计注册链接不起作用 - 未定义方法“user_registration_path”

    这个问题之前已经报告过 但我仍然无法找到解决方案 我已将插件 Devise 安装到我的新 RoR 项目中 当我点击注册链接时 我被重定向到以下路线 http localhost 3000 users registration sign up
  • SQL Server 不使用索引将日期时间与非空进行比较

    我有一个与其他任何表都不相关的简单表 它有一个非 PK 列 它是一个日期 我已经为该列创建了一个非聚集索引 如果我提出这个查询 select from table where datecolumn is not null 但如果我删除 no
  • Mongoid 中的 find_or_create_by 线程安全吗?

    我有一个使用 Mongoid 的 find or create by 方法的网络应用程序 poll Poll find or create by fields 在投入生产之前 我尝试运行故障场景 我发现多个用户可以尝试使用此方法访问此资源
  • 如何在 Rails 3.2.1 版本中注释 Rails 模型

    我正在尝试遵循一些在线教程来在 Rails 中注释我的模型 然而 似乎所有教程都在谈论过时的注释版本或不正确的安装 这真是一团糟 到目前为止我已经尝试过以下方法 1 在 Gemfile 中添加此内容 gem annotate 2 4 0 2
  • 当一组工作人员完成时如何执行 Sidekiq 回调

    假设我有一个 Sidekiq 任务将产品处理到我的数据库 每个产品都按商店分组 因此我的代码的一个过于简化的示例将是这样的 stores each do store store products each do product Produc

随机推荐

  • 在 TextMate 中将 RVM 与不同的 gemset 结合使用

    我已经设置了 RVM 并按照以下方式为我的项目制作了单独的宝石集RVM 最佳实践 http rvm beginrescueend com rvm best practices 现在在 TextMate 中运行测试文件不起作用 我已经在这里读
  • Laravel Mix 中的真实 ENV 值

    因此 在 Laravel Mix 中 文档中说我们可以向 env 文件添加以 MIX 为前缀的内容 然后我们可以在编译时在 JS 文件中访问它 我想我可能在这里遗漏了一些东西 因为这并没有真正提供与 env 文件类似的任何内容 因为在将资产
  • 在脚本中使用内置电子表格函数

    我是第一次使用 Google App Script 我在 Google Doc 电子表格上使用它 我正在尝试非常简单的功能 只是为了学习基础知识 例如这有效 function test hello return hello 但我对这个简单的
  • BEM CSS:相似块和样式共享

    阅读有关 BEM CSS 的内容并使用它编写了一些小型网站 我对它相当熟悉 但是 我仍然不确定如何处理非常相似但没有关系的块 假设我有很多无序列表块 它们的顶行都具有相同的样式 其他列表项可以以不同的方式布局 并且彼此完全无关 我发现自己给
  • 在 onPageFinished 事件之外将 Javascript 注入到 Web 视图中(使用 DatePicker 在 Web 视图的输入上设置日期)

    我有一个 Android 应用程序 运行一个加载特定页面的 WebView 也是该应用程序的一部分 我想使用 Android DatePicker 从用户那里获取日期 并在 WebView 页面内的输入上设置该值 当用户单击输入时 Date
  • UIWebView横向旋转不填充视图

    我的 UIWebView 遇到问题 当视图加载时 它会以任一方向加载 完美填充整个页面等 然而 如果我以纵向方式加载它 然后旋转设备 网络视图不会一直填充到右侧 我一生都无法弄清楚为什么 这是我的看法确实加载方法 void viewDidL
  • 创建 ViewModel:在模型数据可用之前还是之后进行?

    我有一个从数据源加载数据的 WPF 应用程序 在加载一些数据之前 没有任何内容可显示 我的问题是我是否 在任何数据可用之前创建V和VM 一旦可用 就在虚拟机中设置数据 一开始只创建V 等待数据可用 然后创建注入数据的虚拟机 仅在数据可用时创
  • 如何删除已删除的 git 子树文件夹的历史记录?

    我使用 git subtree 添加了一个 git 存储库 问题是我硬重置回使用 git subtree 添加存储库之前 现在提交历史记录仍在存储库中 但已与主服务器断开连接 知道如何删除它吗 我尝试了 git rm cached 但没有成
  • 跨多个表维护 Identity 值

    我们遇到的情况是 多个表中有一个名为 Customer Number 的列 该列是所有表中的标识列 但是有没有办法可以使该列在所有表中唯一 例如 如果我在 table one 中添加一行 并且标识列为其分配值 1 现在如果有人在 table
  • 从.ajax()调用加载knockout.js observableArray()

    这让我很困惑 这一定是我没看到的小事 我正在尝试加载一个非常简单的observableArray通过 ajax 调用进行淘汰赛 javascript we bind the array to the view model property
  • 抑制命令行输出

    我有一个像这样的简单批处理文件 echo off taskkill im test exe f gt nul pause 如果 test exe 未运行 我会收到以下消息 ERROR The process test exe not fou
  • 静态主类 - AS3

    有没有一种方法可以使主类 基于主 fla 的类 静态 所以我们可以像在java中一样使用它 能够从其他类引用它 因为我必须将main本身的实例作为参数传递给一个类 否则我会失去引用 我尝试添加静态前缀 但似乎 as3 不允许 AS3中没有静
  • 生成随机数一次

    我需要创建一组 0 到 800 之间的随机数 问题是目前我需要快速执行此操作 并且每个数字仅返回一次 我目前的做法是 创建一个std vector包含从 0 到 800 的数字 使用选择一个号码numberVector rand numbe
  • 如何正确读取 Flux 并将其转换为单个 inputStream

    我在用着WebClient和定制BodyExtractor我的 spring boot 应用程序的类 WebClient webLCient WebClient create webClient get uri url params acc
  • Blazor WebAssembly Visual Studio 调试器问题

    我创建了一个干净的 Blazor PWA 项目 当我尝试使用调试器运行它时 不到一半的时间它无法正确启动 一半的时间实际上会有所改善 如果尝试使用调试器 F5 或调试 开始调试 启动 则会打开一个新的浏览器窗口 其中 URL 为 about
  • 适用于 Swift 5 和 Facebook SDK 5 的 Facebook GraphRequest

    我最近更新了我的所有pods和快速的语言Swift 5在我的项目中 收到了大量错误消息 我已经慢慢解决了这些消息 然而 我在 Facebook 上遇到了困难GraphRequest之前工作正常 特别是此错误消息位于version的参数Gra
  • 如何将 Log4J2 复合配置与 Spring Boot 结合使用

    我使用 Spring Boot 2 0 1 starter 和 log4j2 使用以下 POM WAR 文件托管在 Tomcat 8 中 而不是使用嵌入式 tomcat 应用程序日志写入控制台而不是写入日志文件 显然 Spring Boot
  • javascript 中的 location.search 是什么

    我想知道什么location search substring 1 事实上确实如此 我在某个网站上看到了这段代码 我尝试使用打印alert 但这并没有给出任何结果 它应该提醒 location href 吗 alert location s
  • 使用 Xamarin 项目中的 netstandard13 包

    我正在尝试使 Npgsql NET 的 PostgreSQL 提供程序 可供 Xamarin 用户使用 Npgsql已经支持 NET Platform Standard 版本3 并且该标准的文档包含以下句子 如果库面向 NET Platfo
  • 在 Ruby on Rails 中,DateTime、Timestamp、Time 和 Date 之间有什么区别?

    根据我的经验 在编程时获得正确的日期 时间总是充满危险和困难 Ruby 和 Rails 在这方面一直让我困惑 只是因为有太多的选择 我从来不知道我应该选择哪个 当我使用 Rails 并查看 ActiveRecord 数据类型时 我可以找到以