在 MySQL 中选择 TIMESTAMP 而不是 DATETIME 列的充分理由是什么?

2024-03-11

免责声明:这可能是重复的日期时间与时间戳? https://stackoverflow.com/questions/409286/datetime-vs-timestamp,但我觉得我不相信答案:

我的问题是:
在 MySQL 中选择 TIMESTAMP 而不是 DATETIME 列的充分理由是什么?

我很确定我不知道这两者之间的所有区别,所以我将尝试列出 DATETIME 的主要优点(DT)与时间戳(TS) 据我所知:

  • DT是人类可读的(TS并非没有使用TO_DATE)
  • DT可能的时间跨度为 8999 年 (1000-01-01 00:00:00 to 9999-12-31 23:59:59)
    (TS年仅68岁左右,1970-01-01 to 2038-01-19)
  • DT领域似乎表现更好(根据这篇博文 http://dbscience.blogspot.com/2008/08/can-timestamp-be-slower-than-datetime.html)
  • DT可用于高级日期计算(SELECT NOW() + INTERVAL 2 DAY)

反之亦然:

  • TS只需要 4 个字节(DT uses 8)
  • TS存储为 UTC 值并根据客户端的时区设置进行更改
  • TS列可以作为“日志”来监视行何时发生更改

我认为使用它的唯一原因是行监控,但是查看范围TIMESTAMP,这将“仅”28 年*结束,我宁愿使用插入或更新触发器。

那么,我错过了什么?我还是没有看到真的很好出于任何目的选择时间戳的原因是什么?

* I know, this is appears quite long, but back in the 60s some engineers also decided to shave off 2 bytes of the year field, because their computer systems would never run until the year 2000 .....


DT 列还可以充当“日志”来监视行何时更改,我使用它们和触发器来做到这一点。

在处理大量 PHP 内容时,我通常使用时间戳来减少过多的日期解析。如果需要,我可以更新我的软件以使用日期时间。

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

在 MySQL 中选择 TIMESTAMP 而不是 DATETIME 列的充分理由是什么? 的相关文章

随机推荐