当前位置: 首页 > 面试题库 >

何时使用日期时间或时间戳[重复]

郦祺
2023-03-14
问题内容

这个问题已经在这里有了答案

我应该在MySQL中使用datetime或timestamp数据类型吗? (39个答案)

6年前关闭。

我已经搜索了此文件,但没有明确的答案(尤其是后者)。在什么情况下应该使用日期时间或时间戳记?


问题答案:

假设您使用的是MS SQL Server(不是,请参见 下面更新 ):

一个表只能有一个时间戳列。每次插入或更新包含时间戳列的行时,都会更新时间戳列中的值。此属性使timestamp列不适合用作键,尤其是主键。对行进行的任何更新都会更改时间戳记值,从而更改键值。如果列在主键中,则旧键值不再有效,并且引用旧值的外键不再有效。如果在动态游标中引用了表,则所有更新都会更改游标中行的位置。如果该列在索引键中,则对数据行的所有更新也会生成索引的更新。

有关MSDN的信息

如果您需要按行存储日期/时间信息,并且没有更改该日期/时间,请使用DateTime;否则,请使用时间戳。

另请注意: MS SQL Server时间戳字段不是日期也不是时间,它们是数据更改时间的相对顺序的二进制表示。

更新资料

正如您所说的那样,MySQL:

TIMESTAMP值从当前时区转换为UTC以进行存储,然后从UTC转换回当前时区以进行检索。(这仅适用于TIMESTAMP数据类型,不适用于其他类型,例如DATETIME。)

从MySQL参考引用

更值得注意的是:

如果您存储TIMESTAMP值,然后更改时区并检索该值,则检索到的值与您存储的值不同。

因此,如果您跨时区使用应用程序,并且需要日期/时间来反映各个用户的设置,请使用时间戳记。如果无论时区如何都需要一致性,请使用Datetime



 类似资料:
  • 何时何地哪个更可取? 我不知道他们之间到底有什么区别。 来自LocalDateTime的文档 ...时间表示为纳秒精度。例如,值“2007 年 10 月 2 日 13:45.30.123456789”可以存储在 LocalDateTime 中。 我假设LocalDateTime也可以接受纳秒。所以我想,我可以用LocalDateTime替换我的代码,它们被声明为TimeStamp。如果我错了,请纠

  • 我正在为我的聊天应用程序使用firebase。在聊天对象中,我使用方法添加时间戳。 请就这个问题提出解决办法

  • 我试图找出如何在Kotlin中将转换为,这在Java中非常简单,但我在Kotlin中找不到任何等效的。 例如:历元时间戳(1970-01-01以来的秒数)== 在Kotlin中是否有解决方案,或者我是否必须在Kotln中使用Java语法?请给我一个简单的例子来说明如何解决这个问题。提前谢谢。 这个链接不是我问题的答案

  • 然后将变量持久化到MySQL表列中。 然而,虽然通过调试,我看到对象显示在正确的时区GMT+1,但在数据库上持久化时,它是一个GMT时区,所以要追溯一个小时。 使用函数返回一个GMT+1日期。 连接字符串为,没有任何参数。 编辑:找到这段代码

  • 问题内容: 有时,我会对Java中不同的Date类型及其实际用法感到困惑。在这里我想总结一下我的理解 毫秒值左右的精简包装,可让JDBC将其标识为SQL DATE值 围绕java.util.Date的瘦包装器,该包装器允许JDBC API将其标识为SQL TIMESTAMP值。通过允许小数秒的精度达到纳秒级,它增加了保存SQL TIMESTAMP小数秒值的能力。 我已经看到大多数项目都更喜欢时间戳

  • 问题内容: 我有一个数据库,它将具有标准sql格式的UMT时间戳。如何提取数据并为其设置Java日期对象? 据我所知mysql是 至于Java,日期/时间的东西一直躲着我。 如果有人为此知道一个好的图书馆,我欢迎您提出建议。 问题答案: 为什么不直接阅读为 看到