我正在向数据仓库添加一些表,并希望将日期时间信息存储到int字段中(时间部分对我来说并不重要)
请注意,我没有存储为20150123,我只是使用
将其存储为纯整数CAST(field as int)
存储2015-06-18 12:57:47.833为42172
我可以轻松地将+1添加一天,并通过向该字段添加7来添加一周。但是增加一个月并不是直截了当的。 此外,每当我需要数据的日期表示时,我都可以将其转换为日期时间。
只是想知道你对此有什么利弊?
答案 0 :(得分:3)
在 XmlSerializer innerSer = new XmlSerializer(typeof(InnerType));
XmlReader subTree = reader.ReadSubtree();
InnerType obj = (InnerType)innerSer.Deserialize(subTree);
和int
之间进行转换就可以了。它很好地定义了转换的作用,因此没有任何神秘的事情会突然改变或停止工作。
让我们看一些方面:
datetime
排序,按日期排序。int
才能理解它。您可以在C#中执行从datetime
到int
的相同转换:
DateTime
在存储空间方面,没有任何优势。 DateTime d = new DateTime(1900, 1, 1).AddDays(42172);
使用四个字节,int
使用八个字节。如果你真的需要保留空间,你应该使用datetime
类型,它只使用三个字节。
答案 1 :(得分:0)
缺点:将其强制转换为int时,您将松散datetime的时间部分,最后仅存储了日期部分。您保存4个字节(日期时间为8个字节,整数为4个字节),但是却失去了精度。通过强制转换日期,可以降低精度,但是可以节省5个字节(日期为3个字节)。因此,如果目标是节省存储空间,我建议您强制转换为最新版本。
如果目标是易于操纵的,请使用DateAdd
和DateDiff
函数,它们同时作用于日期和日期时间。不像+1
或-7
那样简单,但也没有那么复杂,并且基本上是无需大量编码即可增加数月或数年的唯一方法。
专业人士:如果您使用Excel,则无需在Excel和数据库之间进行转换,这是Excel可以读取的Excel的默认日期格式,并且所有Excel的日期功能都可以使用