2015-11-02 54 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; 

你的代碼失敗。

相關問題