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

Oracle Varchar2与构建数据仓库时的日期,oracle,data-warehouse,Oracle,Data Warehouse,在Oracle中构建数据仓库时,选择varchar2而不是日期数据类型是否有什么区别。我的数据仓库不是完全的仓库,因为不需要日期维度(不需要日期层次结构),并且它足以将日期保存为普通的“MM-DD-YYYY”格式字符串。但是使用哪种数据类型?这里“足够”是什么意思?我可以看出不使用DATE会造成什么损失,但有什么值得考虑的呢?当然,如果您持有日期值,在某个时候您会想使用它,例如“2011年3月的销售额”或其他什么?这里的“足够”是什么意思?我可以看出不使用DATE会造成什么损失,但有什么值得考虑

在Oracle中构建数据仓库时,选择varchar2而不是日期数据类型是否有什么区别。我的数据仓库不是完全的仓库,因为不需要日期维度(不需要日期层次结构),并且它足以将日期保存为普通的“MM-DD-YYYY”格式字符串。但是使用哪种数据类型?

这里“足够”是什么意思?我可以看出不使用DATE会造成什么损失,但有什么值得考虑的呢?当然,如果您持有日期值,在某个时候您会想使用它,例如“2011年3月的销售额”或其他什么?

这里的“足够”是什么意思?我可以看出不使用DATE会造成什么损失,但有什么值得考虑的呢?当然,如果您持有一个日期值,在某个时候您可能会想使用它,例如“2011年3月的销售额”或其他什么?

varchar2应该避免使用,因为它占用空间,为什么要使用占用空间比不占用空间大得多的数据类型

现在,磁盘存储空间可能不是什么大问题,但它可以节省一些RAM空间,防止磁盘I/O,特别是在频繁访问包含这些日期的记录时


如果在检索记录时需要磁盘I/O,则速度会稍快一些,因为使用date与varchar2时的大小较小。

应避免使用varchar2,因为它会占用空间,为什么要使用比不使用varchar2的数据类型占用空间大得多的数据类型

现在,磁盘存储空间可能不是什么大问题,但它可以节省一些RAM空间,防止磁盘I/O,特别是在频繁访问包含这些日期的记录时


如果检索记录时需要磁盘I/O,则速度会稍快一些,因为使用date和varchar2时的大小更小。

让我们做一点成本效益分析,好吗

将“日期”字段保留为
VARCHAR2
赞成的意见:
  • 在报告上格式化日期时,计算成本为零(只要它始终以
    MM-DD-YYYY
    格式显示)
欺骗:
  • 无法编入索引(按时间顺序)
  • 由于
    到\u DATE
    调用,搜索计算量增加
  • 如果日期必须以不同格式出现在某些报表上,则需要额外计算(例如:
    TO_CHAR(TO_date(日期列,'MM-DD-YYYY'),'DD-MON-yyyyy')
  • 该列不要求所有值都遵循特定的日期格式,如果需要
    到日期
    ,则会增加失败的风险
将“日期”字段更改为
date
赞成的意见:
  • 可以搜索,而无需花费
    TO\u DATE
  • 可以索引
  • 无法插入“坏”值(尽管从业务角度来看,日期可能仍然没有意义)
  • 可以很容易地格式化
欺骗:
  • 我脑子里想不出任何东西
希望这能从技术角度帮助您做出特定的决策。始终存在商业(或办公室政治)视角:

日期维度不是必需的

我将为您解决这个问题:

日期维度还不是必需的


假设您将列保留为
VARCHAR2
,客户机出现并要求筛选有关此日期字段的某些报告。假设这将终止数据库服务器,您最终需要将其转换为
DATE
。在贵公司的生产环境中进行这种更改相对容易吗?是否有大量的繁文缛节、表格和变更控制板,你必须努力进行简单的变更?如果您确实克服了这些障碍,您确定所有日期都以相同的格式存储吗?

让我们做一点成本/收益分析,好吗

将“日期”字段保留为
VARCHAR2
赞成的意见:
  • 在报告上格式化日期时,计算成本为零(只要它始终以
    MM-DD-YYYY
    格式显示)
欺骗:
  • 无法编入索引(按时间顺序)
  • 由于
    到\u DATE
    调用,搜索计算量增加
  • 如果日期必须以不同格式出现在某些报表上,则需要额外计算(例如:
    TO_CHAR(TO_date(日期列,'MM-DD-YYYY'),'DD-MON-yyyyy')
  • 该列不要求所有值都遵循特定的日期格式,如果需要
    到日期
    ,则会增加失败的风险
将“日期”字段更改为
date
赞成的意见:
  • 可以搜索,而无需花费
    TO\u DATE
  • 可以索引
  • 无法插入“坏”值(尽管从业务角度来看,日期可能仍然没有意义)
  • 可以很容易地格式化
欺骗:
  • 我脑子里想不出任何东西
希望这能从技术角度帮助您做出特定的决策。始终存在商业(或办公室政治)视角:

日期维度不是必需的

我将为您解决这个问题:

日期维度还不是必需的


假设您将列保留为
VARCHAR2
,客户机出现并要求筛选有关此日期字段的某些报告。假设这将终止数据库服务器,您最终需要将其转换为
DATE
。在贵公司的生产环境中进行这种更改相对容易吗?是否有大量的繁文缛节、表格和变更控制板,你必须努力进行简单的变更?如果您确实克服了这些障碍,您确定所有日期都以相同的格式存储吗?

深刻的解释。我将选择日期数据类型。+1没有理由设计新的数据库,这些数据库将日期存储为字符串。2011年,各位!深刻的解释。我将选择日期数据类型。+1没有e