在Oracle中构建数据仓库时,更喜欢varchar2 over date数据类型是否有任何区别。我的数据仓库不是完全仓库,因为日期维度不是必需的(不需要日期层次结构),并且足以将日期保存为普通的'MM-DD-YYYY'格式化字符串。不过要使用哪种数据类型?
答案 0 :(得分:10)
让我们做一点成本/效益分析,不管吗?
VARCHAR2
MM-DD-YYYY
格式显示)。TO_DATE
调用TO_CHAR(TO_DATE(date_column, 'MM-DD-YYYY'), 'DD-MON-YYYY')
)TO_DATE
,则会增加失败的风险。DATE
TO_DATE
希望从技术的角度来看,这将有助于您的特定决定。始终存在业务(或办公室政治)视角:
日期维度不是必需的
我会为你解决这个问题:
日期维度不是必需 尚未
假设您将列保留为VARCHAR2
并且客户端出现并要求过滤此日期字段上的某些报告。假设这是在杀死数据库服务器,您最终需要将其转换为DATE
。在贵公司的生产环境中进行此更改是否相对容易?是否有足够的繁文缛节和表格以及更换控制板,你必须努力做出简单的改变?如果您做设法克服这些障碍,您确定所有日期都以相同的格式存储吗?
答案 1 :(得分:2)
“足够”在这里意味着什么?我可以通过不使用DATE看到你输了什么,但你获得了什么使得这值得考虑?当然,如果您持有日期值,在某些时候您会想要使用它,例如“2011年3月的销售”还是其他什么?
答案 2 :(得分:2)
现在磁盘存储空间可能不是问题,但它可以节省一些RAM空间,防止磁盘I / O,尤其是在经常访问包含这些日期的记录时。
如果在检索记录时需要磁盘I / O,它会稍微快一点,因为使用date vs varchar2时大小会更小。