Oracle-如何从现有日期创建日期?

Oracle-如何从现有日期创建日期?,oracle,datetime,Oracle,Datetime,假设我发布: select date_field from table1; 日期字段类似于“25.11.2009” 我将尝试用月份更改日期字段的位置,反之亦然。(当然,对于超过12天的一些操作) 问题是MOD()函数返回的值是一个数字,即对于01.07.2009-->我得到1表示日期,而不是预期的“01”。后来我无法得知日期。 我的问题有捷径吗?这行吗 TO_DATE(TO_CHAR(a.A_DATE, 'DD/MM/YYYY'), 'MM/DD/YYYY') 这行吗 TO_DATE(TO_

假设我发布:

select date_field from table1;
日期字段类似于“25.11.2009” 我将尝试用月份更改日期字段的位置,反之亦然。(当然,对于超过12天的一些操作)

问题是MOD()函数返回的值是一个数字,即对于01.07.2009-->我得到1表示日期,而不是预期的“01”。后来我无法得知日期。 我的问题有捷径吗?

这行吗

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

TO_DATE(TO_CHAR(a.A_DATE, 'DD/MM/YYYY'), 'MM/DD/YYYY')
我用过: 案例模型(SUBSTR(TO_CHAR(a.birth,'DD.MM.YYYY'),1,2,12) 当1然后是'01' 当2然后是'02' 当3时,然后是'03' 当4时,然后是'04' 5时,然后是'05' 当6时,然后是'06' 当7时,然后是'07' 当8时,然后是'08' 当9时,然后是'09' 当10时,然后是“10” 当11时,然后是“11” 12岁时,然后是“12” 结束 不是很优雅但是很管用:)

我用过: 案例模型(SUBSTR(TO_CHAR(a.birth,'DD.MM.YYYY'),1,2,12) 当1然后是'01' 当2然后是'02' 当3时,然后是'03' 当4时,然后是'04' 5时,然后是'05' 当6时,然后是'06' 当7时,然后是'07' 当8时,然后是'08' 当9时,然后是'09' 当10时,然后是“10” 当11时,然后是“11” 12岁时,然后是“12” 结束
不是很优雅,但很有效:)

你有没有尝试过
改成字符(,'')

你有没有尝试过
改成字符(,'')

我想你需要认真地重新考虑一下你想做的事情

我认为您首先要做的是简单地更改日期的格式,例如将'25.11.2009'更改为'11.25.2009'

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


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

我怀疑您需要认真重新考虑您正在尝试的操作

我认为您首先要做的是简单地更改日期的格式,例如将'25.11.2009'更改为'11.25.2009'

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


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

yli>“我正在匿名化日期,即员工的实际雇用日期,以便在测试环境中使用。”

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

如果你想随机化你的日期,为什么不使用以下方法:

select date_field + dbms_random.value * 100 from table1;

yli>“我不知怎么地匿名了日期,实际上是员工的雇佣日期,以便在测试环境中使用。”

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

如果你想随机化你的日期,为什么不使用以下方法:

select date_field + dbms_random.value * 100 from table1;

LPAD(TO_CHAR(a.birth,'DD',2,'0')抱歉,LPAD(TO_CHAR(a.birth,'DD',2,'0'),12))实际上,yli,这对所有可能的输入都不起作用,因为MOD表达式的输出将在0到11之间,而不是在1到12之间。LPAD(TO_CHAR(a.birth,'DD',2,'0'),抱歉,LPAD(TO_CHAR(a.birth,'DD,'2,'0'),12))实际上,yli,这并不适用于所有可能的输入,因为MOD表达式的输出将在0和11之间,而不是在1和12之间。当然,它是这样的,因为天数从1到31不等,而月份必须在1和12之间。这就引出了一个问题——你到底想做什么?我不知何故将员工的实际雇佣日期匿名化,以便在测试环境中使用。当然是这样,因为天数从1到31不等,而月份必须在1到12之间。这就引出了一个问题——你到底想做什么?我不知何故将员工的日期,实际上是雇佣日期匿名化,以便在测试环境中使用。