2015-09-01 67 views
1

不知道這裏發生了什麼,希望有人能夠對此有所瞭解。SQL服務器在SELECT中的日期格式很奇怪

SELECT TOP 1 CreationDate 
FROM Receipts 
WHERE CreationDate IS NOT NULL 
ORDER BY 1 

返回

CreationDate 
1802-11-01 00:00:00.000 

第二個查詢

SELECT TOP 1 Rct_Id, CreationDate 
FROM Receipts 
WHERE CreationDate IS NOT NULL 
ORDER BY 1 

兩個查詢,幾乎是相同的,除了第一隻,而第二選擇的附加列選擇一個日期列

退貨

CreationDate 
1994-02-14 00:00:00.000 

第二個是合理的和預期的,或多或少可以追溯到數據集創建時。我跑了第二組,改變了ORDER BY 1個DESC,並得到

CreationDate 
5202-11-01 00:00:00.000 

Rct_Id CreationDate 
714350 2015-02-27 00:00:00.000 

我真的很困惑,爲什麼當它自己選定的日期會喜歡這種改變。關於發生了什麼的任何想法?

+1

'順序按1'是第二通過'Rct_Id' – lad2025

回答

5

ORDER BY 1是由序數,這是在SELECT

第一列
SELECT TOP 1 CreationDate 
FROM Receipts 
WHERE CreationDate IS NOT NULL 
ORDER BY 1 

手段採取從由CreationDate升序排序表收據一個記錄順序。

SELECT TOP 1 Rct_Id, CreationDate 
FROM Receipts 
WHERE CreationDate IS NOT NULL 
ORDER BY 1 

手段採取從表收據一個記錄由Rct_id上升

下令要獲得相同的結果,第一個查詢使用ORDER BY 2明確的(好習慣)指定列名。同樣適用於DESC

SELECT TOP 1 Rct_Id, CreationDate 
FROM Receipts 
WHERE CreationDate IS NOT NULL 
ORDER BY CreationDate /* Or ORDER BY 2 */ 
+0

嘖,bloomin'明顯ORDER BY序數,由'CreationDate'第一排序。感謝您發現,我有一個完整的Facepalm時刻。現在是時候給它打電話了。歡呼你的幫助:) –