Varchar2与构建数据仓库时的日期

ref*_*rer 1 oracle data-warehouse

在Oracle中构建数据仓库时,更喜欢varchar2 over date数据类型是否有任何区别.我的数据仓库不是完全仓库,因为日期维度不是必需的(不需要日期层次结构),并且将日期保存为普通的'MM-DD-YYYY'格式化字符串就足够了.不过要使用哪种数据类型?

Ada*_*ter 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没有任何借口可以将日期存储为字符串的新数据库进行设置.这是2011年的人! (7认同)