【发布时间】:2021-11-13 21:37:18
【问题描述】:
这是我的桌子:
表名EXAMPLE
列名DATE
这是以下查询的输出:
SELECT date
FROM example;
1/23/2010
我想将输出转换为:
23-Jan-10
有可能吗?
谢谢
【问题讨论】:
标签: sql oracle type-conversion
这是我的桌子:
表名EXAMPLE
列名DATE
这是以下查询的输出:
SELECT date
FROM example;
1/23/2010
我想将输出转换为:
23-Jan-10
有可能吗?
谢谢
【问题讨论】:
标签: sql oracle type-conversion
DATE 数据类型是一种二进制格式,以 7 字节存储,没有格式,始终包含以下组件:年(存储为世纪和世纪年)、月、日、小时、分钟第二个。
因此,您无法更改 DATE 数据类型的格式。
如果相反,你会问这个问题:
如何格式化
DATE以将其输出为23-Jan-10?
然后您可以使用TO_CHAR 函数将DATE 转换为格式化字符串:
SELECT TO_CHAR(your_date_column, 'DD-MON-YY', 'NLS_DATE_LANGUAGE=English')
AS formatted_date
FROM your_table;
或者,如果您希望输出为 DATE 数据类型,那么您可以使用:
SELECT your_date_column
FROM your_table;
并更改您正在使用的用户界面(SQL/Plus、SQL Developer、Toad、PLSQLDeveloper、PHP、Java 等)以更改该用户界面显示日期的方式。解决方案将取决于您使用的用户界面,但对于 SQL/Plus 和 SQL Developer,您可以更改 Oracle 的 NLS_DATE_FORMAT 会话参数:
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YY';
其他用户界面将有针对这些界面的不同解决方案。
【讨论】:
如果您的列在varchar/text.. 中,那么您可以先转换为日期,然后再转换回字符
SELECT
TO_CHAR(
to_date('1/23/2010','mm/dd/yyyy'),'DD-Mon-YY'
)
datec FROM dual;
如果是日期格式,只有to_char可以
SELECT
TO_CHAR(date_column, 'DD-Mon-YY' )
datec FROM dual;
【讨论】:
20210923。年年月日。它不是一个严肃的设计流程。取决于您同意如何与其他系统交互。我在许多系统中多次遇到这种情况。
您可以将格式与TO_CHAR() 转换一起使用,例如
SELECT TO_CHAR(dt,'DD-Mon-RR')
FROM example
在哪里
DATE 不是作为保留关键字的列的好名称。所以,我把它换成了dt
【讨论】: