加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 将Oracle DATE列迁移到具有时区的TIMESTAMP

发布时间:2020-12-12 08:41:03 所属栏目:MsSql教程 来源:网络整理
导读:Bakground: 我有一个我正在使用的遗留应用程序,它使用DATE类型在数据库中大部分时间存储.我想尝试更新这些表中的一些表,以便它们可以利用时区,因为这会在数据库的不同区域引起用户问题(见下文A).这是针对Oracle 10g的. Quetions: 1)我可以迁移这个“到位”.
Bakground:
我有一个我正在使用的遗留应用程序,它使用DATE类型在数据库中大部分时间存储.我想尝试更新这些表中的一些表,以便它们可以利用时区,因为这会在数据库的不同区域引起用户问题(见下文A).这是针对Oracle 10g的.

Quetions:

1)我可以迁移这个“到位”.那就是这样我可以转换

DATE_COL = type:DATE   =>    DATE_COL = type:TIMESTAMP

…或者我将不得不使用不同的列名?

请记住,数据需要保留.如果这可以在迁移脚本中轻松地完成,它将为我的目的而工作.

2)这种类型的转换是否向后兼容?我们可能会有一些脚本或报告,这将打击我们可能不知道的这个表.我们可以处理它,但我想知道我正在走哪一种大黄蜂巢.

3)我应该注意什么陷阱?

谢谢,

编辑:
(部分是为了回应加里)

我很好,有一个多步骤的过程.

1)通过某种转换将数据移动到新的Timestamp列(caled TEMP)
2)删除旧列(我们称之为MY_DATE)
3)创建具有旧日期列名称(MY_DATE)的新时间戳列
4)将数据移动到MY_DATE列
5)删除TEMP列

加里还希望澄清具体的时区问题.我从下面复制了我的答案,使其更易于阅读.

基本上将从几个不同的领域访问数据.我们需要能够根据需要转换到/从本地时区.我们也有触发器使用sysdate进一步复杂的事情.时间戳与时区缓解了这么多痛苦.

哦,谢谢你的答复.

解决方法

你可以运行:
ALTER TABLE your_table MODIFY your_date_column TIMESTAMP WITH TIME ZONE;

但是我建议在表中添加TIMESTAMP列,使用UPDATE语句进行填充,如果您选择,则删除原始日期列:

ALTER TABLE your_table ADD date_as_timestamp TIMESTAMP WITH TIME ZONE;

UPDATE your_table
   SET date_as_timestamp = CAST(date_column AS TIMESTAMP WITH TIME ZONE);

转换向后兼容 – 您可以切换回如你所愿.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读