【发布时间】:2012-12-13 19:13:09
【问题描述】:
我正在尝试使用 varchar 列更新日期列
update tbl set columnA = columnB
这里,columnA 是 varchar 数据类型,columnB 是日期数据类型。 columnA 有多种日期格式,例如 09302012、9/30/2012、2012-09-30 等不同类型
如何编写单个查询以在单个查询中使用各种类型的日期格式更新列。
已编辑:::
抱歉搞砸了..我刚刚意识到这些是 ssis 包中的单个(部分)更新...
我们有不同类型(6)的品牌,并且对于每个品牌,他们发送具有不同日期格式的不同文件
类型 1 包含日期格式,例如 09/22/2011 9/22/2011 和 2012-09-22
其余所有类型都遵循相同的格式..它的 09222012
所以现在我需要为单个类型编写查询...(直接说只有两个逻辑,一个用于类型 1,另一个用于其余所有类型)
第一个查询逻辑包含三种格式的 case 语句,第二个查询逻辑包含其他格式的逻辑...
最终结果应显示为 2012-09-22 00:00:00(即 yyyy-dd-mm hh:mm:ss) 你能帮帮我吗
我是一个 T-sql 人,不知道 pl-sql 的任何内容(如果它在 t-sql 中,我会直接使用转换和子字符串)
【问题讨论】:
-
您的
varchar2列应采用与to_date格式掩码一致的特定格式。如果您不知道varchar2列中的格式是什么,那么确定varchar2列中每一行的格式可能是无穷无尽的if...else。这就是为什么varchar2类型的日期数据是一个坏主意的原因。 -
根据您的
UPDATE声明,您正在尝试将DATE分配给VARCHAR2列。根据您的问题的文本和标题,您正在尝试将VARCHAR2分配给DATE列。您的UPDATE语句是否反转(即您真的将columnA、VARCHAR2分配给columnB、DATE)?