Oracle中的日期转换(YYYYMMDD格式转换回YYYYMMDD)

v64noz0r  于 2023-03-01  发布在  Oracle
关注(0)|答案(4)|浏览(171)

大家好,我对甲骨文还很陌生,需要一个如何做的想法。
假设我有一个文本文件,文件中的值为
“2018年9月24日”“2018年9月23日”
我从Pro*c中读取这些值,然后向其添加29天,因此值现在从20180924更改为20180953。我不希望发生这种情况,我希望将值添加为

TO_DATE('20180924','yyyymmdd')+29 which returns the value as "23-OCT-18"

答案是正确的,但我希望结果也采用相同的YYYYMMDD格式,如20181023。
我该如何实现这一目标?

2o7dmzc5

2o7dmzc51#

把它格式化回去。

to_char(TO_DATE('20180924','yyyymmdd')+29, 'yyyymmdd')
juud5qan

juud5qan2#

日期没有格式-它们是represented internally by 7 or 8 bytes
如果你想让一个日期有一个格式,那么你需要把它转换成一个可以格式化的数据类型--比如一个字符串:

TO_CHAR( TO_DATE( '20180924', 'yyyymmdd' ) + 29, 'YYYYMMDD' )

当SQL/Plus(或SQL Developer)显示日期数据类型时,它们会隐式地将这些数据类型转换为字符串(因为这比显示原始字节对用户更有意义),并在此隐式转换中使用NLS_DATE_FORMAT会话参数作为格式模型。如果要更改此设置,可以用途:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYYMMDD';

然后你的查询:

TO_DATE( '20180924', 'yyyymmdd' ) + 29

应该(假设您的SQL客户端使用此设置并且没有自己的内部格式首选项)给予您期望的输出。(注意:这将更改客户端的默认格式,以显示此会话中的所有日期,而不仅仅是这一条语句。)

ffx8fchx

ffx8fchx3#

收件人字符(抄送联系人出生日期,“年月日”)

vybvopom

vybvopom4#

从EMP中选择目标编号((目标字符(目标日期(聘用日期,_日-月-年'),'年_月-日'));
从EMP中选择目标编号((目标字符(目标日期(聘用日期,_日_月-年'),' YYYYMMDD '))
20201101
从双重选择目标编号((目标字符(目标日期(系统日期,'日-月-年'),'年_月-日'));

相关问题