2012-12-02 29 views
2

執行與失敗,錯誤如下查詢DBCC CHECKDB WITH NO_INFOMSGS無法找出值範圍爲Date類型的表列

Page (1:2772455), slot 8 in object ID 689489585, index ID 1, partition ID 72057594305052672, alloc unit ID 72057594619953152 (type "In-row data"). Column "Date" value is out of range for data type "datetime".

更新列的合法值。

我上面的消息得到了一個數據庫 的特定表運行DBCC checkDB命令時,當我試圖通過下面的查詢運行以獲取該表的日期列: -

select [date] 
from [TableName] 
where [Year] = 2011 
    and Month = 1 
    and [Date] < '1753-01-01' 
    and Date > '9999-12-31' 

回答

0

您可以嘗試使用Between關鍵字如下: -

select [date] from [TableName] where [Year]=2011 and Month=1 and [Date] between ('1753-01-01','9999-12-31') 
0

首先你WHERE clause沒有意義

  1. 您正在尋找的日期是早於「1753年1月1日」 晚於「9999-12-31」不存在
  2. [Year] = 2011意味着你只需要2011條記錄,並沒有必要按日期範圍在所有過濾 。出於某種原因,如果你需要它應該作爲[date] BETWEEN '17530101' AND '99991231
  3. 建議使用ISO date format這是yyyymmdd(即; '17530101')。 這可能是日期超出範圍錯誤的原因。

    我認爲這將做的工作;

    SELECT [date] FROM [TableName] WHERE [Year] = 2011 AND Month = 1 
        --AND [date] BETWEEN '17530101' AND '99991231' 
        --This filter does not make sense as you have already filtered by 2011. 
    
+0

其實,我試圖找出這超出範圍值的存在於表中的確切記錄。請告訴我如何找到這個價值,以便我可以修復該記錄。按照你的建議,我再次使用ISO日期格式,使用下面的查詢 –

+0

查詢發現記錄: - 選擇[日期]從表1,其中轉換(VARCHAR,日期,112)之間沒有「17530101」和「99991231」 –

+0

你能在服務器管理工​​作室上面運行查詢? – Kaf

相關問題