如何在Oracle Select语句中更改日期类型?

4

我通常使用PostgreSQL,但现在需要在Oracle中进行。

我需要在查询(select)中更改列的数据类型,在PostgreSQL中,我通常会这样做:

select 1::varchar from table

我该如何在Oracle中实现这个功能?

最好的问候,

3个回答

8

转换为varchar类型

 select to_char(Field) from table

截断 varchar

 select substr(field, 1, 1) from table

3
使用to_char()函数时最好明确指定格式(例如 to_char(column, 'yyyy-mm-dd')),以避免在不同的NLS设置下产生意外的结果。 - user330315

4

正如@Michael Pakhantsov所指出的那样,to_char用于将数据转换为字符串。同样,to_dateto_timestamp是将字符串分别转换为日期和时间戳的标准方法。但是,如果您发现需要执行更奇特的转换(例如varchar2转raw),那么cast就是您的朋友:

数字转换为字符串:

select cast(field as varchar2(30)) from table;

字符串转换为原始格式:

select cast(field as raw(16)) from table;

1

和 @Allan 一样,我喜欢使用 cast(),因为它可以转换多种类型。
然而,正如官方文档所说,

CAST 不支持 LONG、LONG RAW、任何 LOB 数据类型或 Oracle 提供的类型

因此,无法将其用于转换为 CLOB,例如,Oracle 将抛出

ORA-00932: 数据类型不一致:期望 - 得到 CLOB


感谢您的编辑,我同意它现在读起来更好了。我是新手,还在适应格式工具。 - mach128x

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