在Oracle SQL中转换日期格式

3

我有一个日期格式,形式为dd.mm.yyyy。我想将其转换为mm/dd/yyyy格式。这可能吗?

我阅读的互联网上的所有文章都说可以将dd/mm/yyyy格式转换为mm/dd/yyyy格式,并且在我尝试时也有效。

但是当我输入dd.mm.yyyy格式时它不起作用?我该怎么解决?

请帮助我。


你是在处理“日期”列还是带有格式化文本的“varchar2”?实际的日期列可以在选择时进行格式化,以显示任何你想要的格式,使用to_char。如果你正在插入或更新数据,请使用to_date将文本格式化为日期数据类型。 - pmdba
显示是由谁完成的?存储格式和显示格式是两个不同的东西。 - William Robertson
2个回答

2

Oracle使用内部格式存储日期。如果您有一个表示日期的字符串,您应该修复数据模型,以便列具有正确的数据类型。

同时,您可以使用以下方式将其转换为date

select to_date(col, 'dd.mm.yyyy')

你可以将其转换回字符串:
select to_char(to_date(col, 'dd.mm.yyyy'), 'mm/dd/yyyy')

谢谢。如果我想包含像以下这样的时间格式,该怎么做? select to_char(to_date('16.12.2020 10:10:20 PM', 'dd.mm.yyyy'), 'mm/dd/yyyy') from dual。这会产生一个错误。 - Kushan Peiris
1
您可以在 to_date()/to_char() 中包含时间格式元素。这些都有很好的文档记录。 - Gordon Linoff

1
我有一个日期格式,形式为dd.mm.yyyy。假设你指的是DATE数据类型,那么不,你没有以dd.mm.yyyy格式拥有它。DATE数据类型值在数据库中以7个字节的二进制值存储(表示世纪、世纪年份、月份、日、小时、分钟和秒),这没有格式。
我想将它转换为mm/dd/yyyy。这可能吗?不可能,因为DATE数据类型没有格式。
然而,你可能想要问的是:我想显示为mm/dd/yyyy,这可能吗?
是的,使用适当的格式模型,使用TO_CHAR即可。
SELECT TO_CHAR( date_value, 'mm/dd/yyyy' )
FROM   table_name

如果您的意思是您有一个CHAR或VARCHAR2数据类型,以dd.mm.yyyy格式存储日期值,那么请使用TO_DATE将其转换为DATE数据类型,然后使用TO_CHAR将其显示为所需格式。
SELECT TO_CHAR( TO_DATE( string_value, 'dd.mm.yyyy' ), 'mm/dd/yyyy' )
FROM   table_name

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接