【发布时间】:2020-06-04 17:01:49
【问题描述】:
我在文件 Delivery_date - '02/09/2020 15:30:00 PM' 中有一个字符串格式的列。它可以是上午或下午。 我需要在 informatica power center 中将其转换为 oracle 的 TIMESTAMP 格式。
我已经尝试过如下 - TO_DATE(Delivery_date,'MM-DD-YYYY HH24:MI:SS')
但它不适用于 AM 和 PM。请推荐
【问题讨论】:
-
你为什么要在
MM-DD-YYYY HH24:MI:SS而不是YYYY-MM-DD HH24:MI:SS。执行SELECT TO_TIMESTAMP(sysdate) FROM dual;返回YYYY-MM-DD HH24:MI:SS格式 -
但无论哪种方式都可以。只要你指定它就是日期
-
@OmariVictorOmosa 您的用户可以在他们自己的会话中设置他们想要的任何格式(即
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'DD-RR-MM AM SS:HH:MI'),因此您不应该依赖默认格式,并且应该始终在@OmariVictorOmosa 的第二个参数中提供格式模型987654328@ 和TO_DATE。 db<>fiddle:在第一个例子中,时间是错误的,在第二个例子中,世纪和时间都是错误的,第三个例子甚至没有运行(所有这些都没有改变 SQL 语句)。 -
让你@MT0。我已经测试过了。
-
@OmariVictorOmosa 我的意思不是说它不适用于您的计算机上的数据库设置;它可能不会以相同的方式对所有用户起作用(请参阅default date format),因此如果您的查询由不同地区的某人运行,那么如果您假设默认格式,相同的 SQL 语句将给出不同的结果(或中断)不保证在用户会话之间保持一致的模型。如果您希望查询对每个人都同样有效,请传递一个明确的格式模型。
标签: sql oracle file informatica informatica-powercenter