【发布时间】:2021-04-19 14:19:26
【问题描述】:
我有一个需要存储季度和年份的表,我需要知道哪种方法最好。我在 10 年前找到了这个答案:Best way to store quarter and year in SQL Server。但是,给出了两个建议 - 一个是将季度和年份存储在单独的列中并将它们设为整数,另一个是存储为日期时间并使用该月的第一天作为当天(即 2021 年 1 月 1 日, 2021 年 4 月 1 日等)。
考虑到这个答案已有 10 年历史,现在可能有更好的方法来存储这些数据,最好的方法是什么?
仅供参考,此数据不会用于计算目的,但可能会被搜索。
谢谢!
【问题讨论】:
-
并没有太大的区别,但
date而不是datetime。尽管使用两列查询更复杂,但可能更容易理解。无论您做什么,都不要将它们存储在varchar中,也不要将它们作为 int202101存储在一个字段中。 -
这很大程度上取决于您的查询。根据需要,这两种方法都可以更好或更差。出于存储目的,这几乎没有问题,因为
DATE和SMALLINT+TINYINT组合都占用 3 个字节。出于索引和计算的目的,可能会有很大的不同。就数据完整性而言,仅存储合法的数据(即实际季度,而不是任意日期)可能是另一个问题。自最初的问题以来已经过去的 10 年在这些问题上并没有真正产生任何影响。计算列可以弥补差异。
标签: sql sql-server database