[英]Oracle date format:varchar to date then char and then date
我有一个varchar值'20-OCT-2019'
我想在日期列中以'10/20/2019'
'20-OCT-2019'
格式加载相同'10/20/2019'
。
我在下面尝试过,但是没有给出预期的输出。
select to_date(to_char(to_date('20-OCT-2019','DD-MON-YYYY'),'MM/DD/YYYY'),'MM/DD/YYYY')
from dual
在Oracle中,DATE值没有特定格式,例如DD-MON-YYYY
或DD/MM/RR
等。所有DATE字段都包含世纪,年,月,日,小时,分钟和秒的子字段。 ,这意味着Oracle中的所有DATE字段实际上都是时间戳值,精度为一秒。 Oracle默认情况下会使用DD-MON-YY
格式将DATE转换为字符串 ,但这只是默认格式-这并不意味着日期以DD-MON-RR
格式存储。
您不能在字符串列中加载字符串数据。 因此,最外层的to_date
转换没有意义,但是,如果要以所需的格式显示,则需要在下面进行这样的转换:
select to_char(
to_date('20-OCT-2019','DD-MON-YYYY','NLS_DATE_LANGUAGE=ENGLISH')
,'MM/DD/YYYY')
as "Appearance in New Format"
from dual;
Appearance in New Format
10/20/2019
NLS_DATE_LANGUAGE
针对英语以外的其他不同本地语言设置使用NLS_DATE_LANGUAGE
选项(在这种情况下, OCT: October is an abbreviation in English Language
)
PS实际上,您并没有像@Bob Jarvis所指出的那样以某种格式保存日期列,但它们显示为取决于您的nls_date_format
设置,例如此示例的设置:
alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.