我希望日期为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格式
答案 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
。