说我发出:
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'按预期。后来我无法得到约会。 我的问题有快捷解决方案吗?
答案 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;