2015-11-02 27 views
0

我有一张表格考试,其中我有一个日期列,格式如下:'MM/DD/YYYY'。SQL:如何排列日期格式的字符串(MONTH/DD/YY)?

我要解决这列和格式更改为“月/ DD/YYYY”

我的代码如下:

SELECT 
    TO_CHAR(Exam_Date, 'MONTH/DD/YY') AS Exam_date 
FROM 
    Exams 
WHERE 
    Student_id = '0000049' 
ORDER BY 
    Exam_date ASC 

不幸的排序我的专栏,像绳子:(

我也试过这样:

SELECT 
    TO_DATE(TO_CHAR(Exam_date, 'MONTH/DD/YYYY'), 'MONTH/DD/YYYY') AS Exam_date 
FROM Exams 
WHERE Student_id = '0000049' 
ORDER BY Exam_date 

在这里,我把他们分类,但在'MM/DD/YYYY'格式:/

谢谢你的帮助。

+1

您确定您使用的是SQL Server吗?在我听说过的任何版本中,TO_CHAR都不是有效的语法。 –

回答

0

您没有使用sql server。看起来你正在使用Oracle。如果您在使用SQL Server,你可以只转换为日期时间,如下所示:

ORDER BY cast(Exam_date as DATETIME) 
我还没有使用甲骨文很长一段时间

...尝试使用以下:

ORDER BY TO_DATE(Exam_Date) 
+0

ORA-00933:SQL命令没有正常结束 –

+0

哦,谢谢你,没关系,如果我把ORDER BY cast(Exam_date作为日期) –

+0

是的,你是对的,我使用的是oracle,对不正确的信息抱歉,并且再次感谢帮助 –

1

我假设您的考试日期的考试表格中的基础字段是日期或日期时间类型。如果是这样,您需要明白,当您对字段执行操作,然后将该表达式与基础字段名称调用相同的事物时,当您尝试执行ORDER BY时,将失去对基本字段的访问权限。

更好的方法是将表达式公开为不同的字段名称。如果你不能做到这一点,你会希望公开你的基地字段作为别名,以便你可以按它排序。

我正在做的第二个假设是TO_CHAR是一个自定义函数,用于将日期显示为文本。

方法1:

SELECT TO_CHAR(Exam_Date, 'MONTH/DD/YY') AS Exam_date_Text 
FROM Exams 
WHERE Student_id='0000049' 
ORDER BY Exam_date ASC 

方法2:

SELECT TO_CHAR(Exam_Date, 'MONTH/DD/YY') AS Exam_date, Exam_date AS ORIG_Exam_date 
FROM Exams 
WHERE Student_id='0000049' 
ORDER BY ORIG_Exam_date ASC 
+0

非常感谢。我想我明白这是如何工作的 –

-1

最简单的方法是使用一个表别名来标识该参考是到列。唯一的变化是将ORDER BY条款:因为你那么它是由EXAM_DATE订购的字符串别名为一个相同的列名

ORDER BY Exams.Exam_date ASC 
+0

好奇,这将是downvoted,因为它似乎是问题的最佳答案。 –

0
select to_char(Exam_Date,'MONTH/DD/YYYY') Exam_date2 
from Exams 
order by Exam_Date; 

你的代码失败。

相关问题