Oracle - 如何从已存在的日期创建日期?

时间:2009-05-08 16:07:12

标签: oracle datetime

说我发出:

select date_field from table1;

date_field就像'25 .11.2009' 我将尝试使用月份更改日期字段的位置,反之亦然。 (当然是数天> 12次操作)

 TO_DATE( MOD(SUBSTR(TO_CHAR(a.A_DATE, 'DD.MM.YYYY'), 4, 2), 12) || '.' ||
              SUBSTR(TO_CHAR(a.A_DATE, 'DD.MM.YYYY'), 1, 2) || 
              SUBSTR(TO_CHAR(a.A_DATE, 'DD.MM.YYYY'), 6, 4),
          'DD.MM.YYYY') 

重要的是从MOD()函数返回的值是一个数字,即01.0.2009 - >我得到1日期,而不是'01'按预期。后来我无法得到约会。 我的问题有快捷解决方案吗?

5 个答案:

答案 0 :(得分:4)

我怀疑你需要认真重新考虑你想要做的事情。

我认为你开始时只想改变日期的格式,例如:将'25 .11.2009'改为'11 .25.2009'。

如果date_field实际上是DATE类型,则字段中不存储固有格式。它是表示特定日期和时间的数值。在SQLPlus或其他工具中选择它时,它会被格式化为文本,但该格式不存储在表中。

如果要以特定格式查看日期,可以使用TO_CHAR函数强制它。您还可以使用NLS_DATE_FORMAT为单个会话,单个客户端或整个数据库设置默认格式模型。

答案 1 :(得分:1)

我用过:        CASE MOD(SUBSTR(TO_CHAR(a.birthday,'DD.MM.YYYY'),1,2),12)             什么时候那么'01'             2那么'02'             3那么'03'             4那么'04'             5那么'05'             那么6'那么'06'             7那么'07'             那么8'那么'08'             那么9'那么'09'             10年那么'10'             11岁那么'11'             12岁那么'12'        结束 不是很优雅,但有效:)

答案 2 :(得分:0)

这有用吗?

TO_DATE(TO_CHAR(a.A_DATE, 'DD/MM/YYYY'), 'MM/DD/YYYY')

答案 3 :(得分:0)

您是否尝试过TO_CHAR(<date>, '<format>')

答案 4 :(得分:0)

意林&GT; “我以某种方式匿名日期,实际上雇用员工的日期,以便在测试环境中使用。”

所以这是你的实际要求。如果要更改某些日期,则根本不需要使用日期/字符串转换函数(TO_CHAR/TO_DATE)。 Oracle直接支持对日期值进行算术运算。

如果您想随机化日期,为什么不使用以下内容:

select date_field + dbms_random.value * 100 from table1;