2014-09-04 107 views
0

我有我的选择查询日期如下格式日期在SQL SELECT查询

Thu Sep 04 23:03:30 GMT 2014 

,并在我的表日期是这种格式

13-NOV-13 03.38.22.000000000 AM 

我怎样才能在数据库格式转换。我尝试使用

TO_CHAR('Thu Sep 04 23:03:30 GMT 2014','DD-MMM-YY HH:MI:SS') 

但无法正常工作。任何帮助将不胜感激。

+0

为什么你需要将该文字作为select语句的一部分? – 2014-09-04 23:45:01

+0

然后我应该手动更改格式为GMT格式的日期并在查询中使用它吗? – Deepak 2014-09-04 23:48:44

+0

你想做什么?我想我只是不明白这个问题。 – 2014-09-04 23:50:53

回答

1

此:

select to_char(timestamp '2014-09-04 23:03:30 GMT','DD-MON-YY HH:MI:SS') 
from dual 

将通过 '周四04九月23时03分30秒格林尼治标准时间2014'

代表的时间戳

成格式'DD-MON-YY HH:MI:SS'(我想你的意思是MON,而不是MMM)

但输入文字必须被更改为 '2014年9月4日23点03分30秒GMT'(如图所示)

小提琴:http://sqlfiddle.com/#!4/d41d8/34741/0

输出:

04-SEP-14 11:03:30 

然而,您在选择列表中放入的格式仅包含秒,而您表示您在表格中存储了小数秒(可能是时间戳字段),因此要使用FF而不是SS来匹配该格式。另外,您表示您使用的是HH12格式,而不是HH(12小时与24小时)。要做到这些,你会想比你正在尝试转换为不同的格式:

select to_char(timestamp '2014-09-04 23:03:30 GMT','DD-MON-YY HH12:MI:FF AM') 
from dual 

小提琴:http://sqlfiddle.com/#!4/d41d8/34744/0

注意,如果时间是在一天的后半段它会显示下午而不是上午,尽管你在sql中看到AM(参见http://www.techonthenet.com/oracle/functions/to_char.php

输出:

04-SEP-14 11:03:000000000 PM 
0

试试这个:

LEFT(DATENAME(dw,date),3) +' '+  CAST(date AS VARCHAR(20)) 
+1

Hiya,这可能很好地解决了这个问题......但是如果你能够编辑你的答案并提供一些关于它是如何以及为什么有效的解释的话,那就很好了:)不要忘记 - 有一堆新手堆栈溢出,他们可以从你的专业知识中学到一两样东西 - 对你来说很明显对他们来说可能不是这样。 – 2014-09-05 01:33:27

+0

@TarynEast感谢您的信息;我一定会在下次更彻底地解释我的答案。 – ItalianStallion 2014-09-05 16:16:46

+0

这次你也可以这样做......只需编辑你的答案并添加一个或两个句子:) – 2014-09-05 21:59:27