【问题标题】:Oracle SQL Migrate data from date range / period to monthsOracle SQL 将数据从日期范围/期间迁移到月份
【发布时间】:2018-07-01 06:44:50
【问题描述】:

我在将数据从一个表迁移到另一个表时遇到了一些问题。我使用的是 Oracle 11 数据库。在我的问题中,一张表说明了一些在特定日期范围内有效的值(开始日期和结束日期)。数据应迁移到的另一个表应说明每月的这些值 (MMYYY)。因此,对于特定的时间范围(例如 2010 年 1 月 1 日至 2010 年 12 月 31 日),数据应按月说明(01/2010、02/2010、...、31/2010)。我试图为这种情况创建一个合适的 sql 插入语句,但我没有成功。


例子:

表 1 具有以下属性:ID (PK)、START_DATE、END_DATE、VALUE

表 2 具有以下属性:ID (PK)、MONTH、YEAR、VALUE


表 1:

  • ID = 1,START_DATE = 01/01/2010,END_DATE = 31/12/2015,VALUE = 5
  • ID = 2,START_DATE = 01/01/2012,END_DATE = 31/12/2013,VALUE = 10
  • ID = 3,START_DATE = 01/01/2018,END_DATE = 31/12/2020,VALUE = 15

这些条目在新表中应如下所示:

表 2:

  • ID = 1,MONTH = 01,YEAR = 2010,VALUE = 5
  • ID = 1,MONTH = 02,YEAR = 2010,VALUE = 5
  • ID = 1,MONTH = 03,YEAR = 2010,VALUE = 5
  • ...
  • ID = 1,MONTH = 12,YEAR = 2015,VALUE = 5
  • ID = 2,MONTH = 01,YEAR = 2012,VALUE = 10
  • ID = 2,MONTH = 02,YEAR = 2012,VALUE = 10
  • ID = 2,MONTH = 03,YEAR = 2012,VALUE = 10
  • ...
  • ID = 2,MONTH = 12,YEAR = 2013,VALUE = 10
  • ID = 3,MONTH = 01,YEAR = 2018,VALUE = 15
  • ID = 3,MONTH = 02,YEAR = 2018,VALUE = 15
  • ID = 3,MONTH = 03,YEAR = 2018,VALUE = 15
  • ...
  • ID = 3,MONTH = 12,YEAR = 2020,VALUE = 15

是否有最佳实践方法来做到这一点?或者有人有想法吗?感谢您的建议!

【问题讨论】:

    标签: sql database oracle date migration


    【解决方案1】:

    使用 TO_DATE('mm/yyyy') 转换您的字段 你可以在这里找到更多信息:https://www.techonthenet.com/oracle/functions/to_date.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 2017-07-29
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 2017-04-12
      相关资源
      最近更新 更多