DateTime如何存储时间

分析问题

  System.DateTime提供了时间的存储和操作。一个DateTime的对象,就表示了某个时间点。.NET小组把DateTime设计成结构,所以DateTime是值类型的。

  和很多其他系统一样,DateTime结构使用一个长正数来存储时间,并且通过只读公共属性Ticks提供访问接口。DateTime所能代表的最小时间是0001年1月1日0时0分0秒,而存储时间的长整数则代表从最小时间到代表时间经过的刻度数(Ticks),其中一个刻度数代表一个毫微秒,所以DateTime的精度就是百毫微秒。从内部来看,存储时间的是一个64位长的长整数,但是DateTime只使用该长整数中的62位来存储时间,而另外两位则用来存储该时间是否是UTC时间的标志,关于UTC时间将在后续章节中有所覆盖,这一点可以从私有属性InternalTicks的代码中得到证实:

private long InternalTicks
{
  get
  {
    //屏蔽了最高的二位,只使用低62位
    return (((long) this.dateData) & 0X3fffffffffffffffL));
  }
}

  当程序员操作时间时,需要获得诸如日期、年份等贴近现实世界的时间表示。DateTime结构使用一个名为GetDatePart的方法来转换存储的长整数为真正的时间。诸如Year、Month、Day等公共属性都通过调用GetDatePart方法来得到需要的值。所以,DateTime并不额外地存储年份、月份等数值,所有操作从根本上来说都针对存储的长整数来进行。

答案

  DateTime结构内部存储一个64位长的整数,其中的低62位用来代表时间,它表示从0001年1月1日0时0分0秒开始到表示的时间经过百毫微秒。

DateTime如何存储时间

时间: 2024-07-30 03:31:31

DateTime如何存储时间的相关文章

c语言数据库数据类型

数据类型是一种属性,用于指定对象可保存的数据的类型,SQL Server中支持多种数据类型,包括字符类型.数值类型以及日期类型等.数据类型相当于一个容器,容器的大小决定了装的东西的多少,将数据分为不同的类型可以节省磁盘空间和资源. ??Sql Server 还能自动限制每个数据类型的取值范围,例如定义了一个类型为int的字段,如果插入数据时插入的值的大小在smallint或者tinyint范围之内, Sql Server 会自动将类型转换为smallint 或者tinyint,这样一来,在存储数

我必须得告诉大家的MySQL优化原理

---恢复内容开始--- 说起MySQL的查询优化,相信大家收藏了一堆奇淫技巧:不能使用SELECT *.不使用NULL字段.合理创建索引.为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必.因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用. MySQL逻辑架构 如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器.下图展

高性能mysql - Schema与数据类型优化

MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要.选择数据类型的几个原则1.更小的通常更好2.简单就好,如使用date,time,datetime来存储时间而不是字符串 3.尽量避免NULL, 某个字段如果计划建索引,就应该尽量把这个字段设计成NOT NULL DATETIME 与 TIMESTAMPTIMESTAMP 更小, 但是允许的时间范围小. 整数类型TINYINT 8位存储空间,SMALLINT 16位存储空间, MEDIUMINT 24位存储空间, INT 3

c#SQLserver数据类型

c#SQLserver数据类型 Sql Server之数据类型详解 ??数据类型是一种属性,用于指定对象可保存的数据的类型,SQL Server中支持多种数据类型,包括字符类型.数值类型以及日期类型等.数据类型相当于一个容器,容器的大小决定了装的东西的多少,将数据分为不同的类型可以节省磁盘空间和资源. ??Sql Server 还能自动限制每个数据类型的取值范围,例如定义了一个类型为int的字段,如果插入数据时插入的值的大小在smallint或者tinyint范围之内, Sql Server 会

MySQL 设计规范(续)

1.1    数据库字段设计规范 优先选择符合存储需要的最小的数据类型: 对于非负数据采用无符号整型进行存储: varchar(N)中N代表字符数,不是字节数(Oracle中是字节数,如中文GBK下2字节存一个汉字),即MySQL中varchar(2)可存储2个汉字,占用6个字节(UTF8). 避免使用text,blob数据类型: 常见的text类型可存储64k,一般是使用不到这么大空间: 非要使用,建议把blob或text列分离到单独的扩展表中,且避免使用select *; text, blo

.NET工作准备--02基础知识

(已过时) 框架基础,语法基础,字符串&集合&流,常见类和接口; 02.net基础(重点) -第一部分 框架基础 1.基础概念 CTS(Common Type System),CLS(通用语言规范),CLR(Common Language Runtime); 环境基础-.net framework; 程序集(Assembly),AppDomain:[进程 [CLR  [AppDomain  ]  ]  ] 2.运行机制 * C#--csc.exe-->IL--JIT-->机器码

Sql Server之数据类型详解

  数据类型是一种属性,用于指定对象可保存的数据的类型,SQL Server中支持多种数据类型,包括字符类型.数值类型以及日期类型等.数据类型相当于一个容器,容器的大小决定了装的东西的多少,将数据分为不同的类型可以节省磁盘空间和资源.  Sql Server 还能自动限制每个数据类型的取值范围,例如定义了一个类型为int的字段,如果插入数据时插入的值的大小在smallint或者tinyint范围之内, Sql Server 会自动将类型转换为smallint 或者tinyint,这样一来,在存储

万字总结:学习MySQL优化原理(转)

本文转自:https://www.tuicool.com/wx/2eMBfmq 前言 说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *.不使用NULL字段.合理创建索引.为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必.因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用. MySQL逻辑架构 如果能在头脑中构建一幅MySQL各组件之间

MySQL Optimization 优化原理

MySQL Optimization 优化原理 MySQL逻辑架构 如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器.下图展示了MySQL的逻辑架构图. MySQL逻辑架构,来自:高性能MySQL MySQL逻辑架构整体分为三层,最上层为客户端层,并非MySQL所独有,诸如:连接处理.授权认证.安全等功能均在这一层处理. MySQL大多数核心服务均在中间这一层,包括查询解析.分析.优化.缓存.内置函数(比如:时间.数学.加密等函数).所有的跨存储引擎