日期为DD-MMM-YYYY格式,例如29-JAN-2015

时间:2015-01-29 13:06:12

标签: sql oracle date

我希望日期为DD-MMM-YYYY格式,例如2015年1月29日。

我尝试过以下查询

SELECT TRIM(TO_DATE('29 Jan 2015'
                ,'DD MON YY')) FROM DUAL

我的结果是:29-JAN-15

但我期待:29-JAN-2015日期格式不是char格式

7 个答案:

答案 0 :(得分:5)

我假设Oracle DB:

select to_char(SYSDATE, 'dd-Mon-yyyy') from dual

返回

29-Jan-2015

答案 1 :(得分:2)

感谢您的回答。 我得到了解决方案。首先,我们需要改变会话,如下所示:

alter session set nls_date_format ='DD-MON-YYYY';

然后运行查询: 选择修剪(2015年1月29日''                     ,'DD MON YYYY')) 来自双重 现在我得到了结果:29-JAN-2015

答案 2 :(得分:1)

你正在做的是采取字符串' 2015年1月29日'并使用“DD MON YY'”格式制作日期。当然,这对于2015年'不匹配' yy',但Oracle在这里很宽松。

然后在日期使用TRIM。但TRIM是用于字符串的。会发生什么事情,你会在1月29日和15日之前出现。我正在展示' 29.01.15'而不是通常的' 2015年1月29日。然而,行为:不要在日期上使用TRIM,据我所知,其行为无法指定。使用TO_CHAR格式化输出中的日期。

如果您只选择没有TO_CHAR的日期,您将获得以某种标准格式显示的日期,该格式可以是2015年1月29日'或者' 29 1月15日'或' 29.01.2015'或者' 01/29/2015'取决于您使用的应用程序,可能还有一些设置。

为了完整起见:

TO_DATE需要一个字符串(' 2015年1月29日'在您的情况下)并将其转换为日期。如果字符串包含名称,请确保指定相应的语言设置:

TO_DATE('29 Jan 2015', 'dd mon yyyy', ''NLS_DATE_LANGUAGE=AMERICAN')

要从日期获取格式化字符串,请使用TO_CHAR:

TO_CHAR(sysdate, 'dd MON yyyy', 'NLS_DATE_LANGUAGE=AMERICAN')

但是,通常你不会这样做。您按原样选择日期,并让您的应用程序(用PHP,Java或其他语言编写)关心如何将其恰当地显示在用户的计算机设置中。

答案 3 :(得分:-1)

在SQL Server中查询

select CONVERT(nvarchar, GETDATE(), 106) as [Converted Date]

返回:

29 Jan 2015

答案 4 :(得分:-2)

Manu是对的。 Oracle发布了完整的日期格式说明符列表。

http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements004.htm#CDEHIFJA

答案 5 :(得分:-3)

使用CONVERT(VARCHAR(11),GETDATE(),106)

请参阅此处的详细说明: http://www.w3schools.com/sql/func_convert.asp

答案 6 :(得分:-4)

你可以尝试:

SELECT TRIM(TO_DATE(SYSDATE ,'DD MON YYYY')) FROM DUAL

YY只显示2个密码,而不是显示4的YYYY