SQL Oracle 更新日期

3

我的表格table1有一个列名为date_txt,其中包括2/16/2011 12:00:00 AM - 列date_txtVARCHAR2 (250 Char)

我的表格table1还有一个DATE类型的列名为date

我想要“更新”我的字段:

最终输出结果应该是:

table1:

 date

 2/16/2011

这段代码从 table1date_txt 中获取“日期”,并将其更新为列 date 中的日期。

有什么想法吗?我是一个初学者。


请查看TO_DATE函数 http://www.techonthenet.com/oracle/functions/to_date.php - DSF
为什么要将日期/时间存储在varchar列中?为什么要重复存储相同的数据? - jarlh
@jarlh 我从一个 Excel 文件中导入了日期,它现在是一个 varchar 类型的,但我想把它放在另一个列中作为日期。 - piguy
我明白了,那么你要删除date_txt列? - jarlh
没有关系,即使它为空 - 我们不会删除它。 - piguy
3个回答

4

谢谢 - 我不得不添加一点来解决我的问题:'MM/DD/YYYY HH:MI:ss AM' - piguy

1

包含2/16/2011 12:00:00 AM的列date_txt

  • 首先,DATE没有任何格式。您看到的是为了方便解释日期值而进行的显示

  • 其次,您绝对不应该将DATE存储为VARCHAR2。这是一个很大的问题和糟糕的设计。

既然您有一个不良的设计,现在修复它是一个好主意。

按照以下步骤操作:

  1. 添加一个新列,使用DATE数据类型
  2. 使用TO_DATE从旧列中更新新列的日期值。
  3. 删除旧列。
  4. 重命名新列为旧列。

我已经在这里回答了如何做https://stackoverflow.com/a/29625772/3989608


0

请尝试以下操作:

update table1 set date=
    (select to_date(date_txt,'dd/mm/yyyy') from table1 where id=yourId) where id=yourId;

使用主键列作为ID。

如果这是您每次需要的内容。我建议您使用触发器


这里不需要子查询吗? - Andomar
是的,你不需要子查询 :) 请看我的答案作为一个例子。 - Andomar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接