sql server中日期时间的内部表示是什么?

发布于 2024-07-28 23:40:08 字数 247 浏览 6 评论 0原文

SQL Server 中存储的日期时间值的基础数据结构是什么(2000 和 2005,如果不同)? 即精确到字节表示?

据推测,当您选择日期时间列时获得的默认表示形式是特定于区域性的值/可能会发生变化。 也就是说,一些我们看不到的底层结构被格式化为 YYYY-MM-DD HH:MM:SS.mmm。

我问这个问题的原因是,我的部门普遍认为它在内存中的存储方式是 YYYY-MM-DD HH:MM:SS.mmm,但我确信情况并非如此。

What is the underlying datastructure of datetime values stored in SQL Server (2000 and 2005 if different)? Ie down to the byte representation?

Presumably the default representation you get when you select a datetime column is a culture specific value / subject to change. That is, some underlying structure that we don't see is getting formatted to YYYY-MM-DD HH:MM:SS.mmm.

Reason I ask is that there's a generally held view in my department that it's stored in memory literally as YYYY-MM-DD HH:MM:SS.mmm but I'm sure this isn't the case.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幸福丶如此 2024-08-04 23:40:08

存储为 8 字节字段,范围为 1753- 01-01 到 9999-12-31,精确到 0.00333 秒。

细节据说是不透明的,但大多数资源(1),<我在网上找到的 href="http://sqlmag.com/sql-server/solving-datetime-mystery" rel="noreferrer">(2) 声明如下:

前 4 个字节存储自 SQL Server 纪元(1900 年 1 月 1 日)以来的天数,后 4 个字节存储午夜后的滴答数,其中“滴答”为 3.3 毫秒。

前四个字节是有符号的(可以是正数或负数),这解释了为什么可以表示早于纪元的日期。

It's stored as an 8 byte field, capable of a range from 1753-01-01 through 9999-12-31, accurate to 0.00333 seconds.

The details are supposedly opaque, but most resources (1), (2) that I've found on the web state the following:

The first 4 bytes store the number of days since SQL Server's epoch (1st Jan 1900) and that the second 4 bytes stores the number of ticks after midnight, where a "tick" is 3.3 milliseconds.

The first four bytes are signed (can be positive or negative), which explains why dates earlier than the epoch can be represented.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文