【问题标题】:Extract Date as Number or as Datetime将日期提取为数字或日期时间
【发布时间】:2020-07-03 17:01:16
【问题描述】:

我们有一个数据仓库,其中包含来自 ERP 系统的表格和视图。视图包含与表相同的信息,但日期类型不同。 这些视图的日期类似于“01.01.2020” 这些表的日期类似于数字“19001”。

现在,从性能/刷新的角度来看。什么性能更高?我应该使用带有日期作为数字的原始表格吗? 我们说的是 10mio 行。

【问题讨论】:

  • “19001”是什么意思?
  • 表示2019年的第一天> 01.01.2019
  • 在数据库中使用正确的数据类型存储日期可能会更好。当数据被摄取时,我会倾向于转换它们。
  • 谢谢! Select * 需要更长的时间?与日期列相比,使用数字列刷新 5mio 行是否有显着差异?
  • 您还没有真正解释您在做什么以及您要比较的性能。性能和刷新是什么?查询视图必须做数字到日期的转换;但是如果您需要实际日期,那么这必须发生在某个地方,那么您是否要问查询数字和转换是否更快......无论应用程序/层正在运行查询吗?您是在应用日期过滤器作为查询的一部分吗?还是在谈论更新表/视图?更新视图需要一个代替触发器,这会减慢速度。

标签: sql oracle powerbi powerquery


【解决方案1】:

动态转换您的数字非常容易

SQL> select to_date('19041','YYDDD') from dual;

TO_DATE('
---------
10-FEB-19

但请放心,将日期存储为除日期之外的任何内容通常会给您带来麻烦。如果您可以在加载时对其进行转换,或者甚至使用虚拟列然后在该列上收集优化器统计信息,那么您最好直接使用数字列。

这里有一些视频演示,说明一旦您开始偏离数据的“自然”数据类型,事情通常会在哪里变坏。

https://youtu.be/cqnuwNc4-1M

【讨论】:

    猜你喜欢
    • 2020-08-14
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    相关资源
    最近更新 更多