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