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之间。这就引出了一个问题——你到底想做什么?我不知何故将员工的日期,实际上是雇佣日期匿名化,以便在测试环境中使用。