。NET DateTime.MinValue
是1/1/0001,但是Windows Azure表存储不接受此值,因为它有不同的下限:CloudTableClient.MinSupportedDateTime
。
为什么会有这样的差异,是什么让Azure团队以这种方式设计它?这只是一个问题,我相信这个选择背后有技术上的困难。
Azure很可能以与DateTime
不同的格式存储这些值。数据库引擎的类型系统与任何客户端编程语言的类型系统不同是很常见的。工程通常是关于权衡的,数据库开发人员通常会做出与其他工具开发人员不同的选择。例如,DateTime
使用两位来存储与时区相关的数据,以便在夏令时转换期间支持UTC和当地时间之间的往返。当执行比较、散列或序列化时,这两个额外的位会被屏蔽掉。我非常怀疑Azure存储这样的信息,因为它不需要它,而且它只会使查询不必要地复杂化。
不幸的是,我不知道DateTime
如何存储在Azure中的具体细节,但这个MSDN博客提到了DateTime
的有限范围,以及Azure类型比更有限的另一种方式。NET等价物—String
和byte[]
限制为64KB。