3

クエリの実行DBCC CHECKDB WITH NO_INFOMSGSは次のエラーで失敗しました:

ページ(1:2772455)、オブジェクトID 689489585のスロット8、インデックスID 1、パーティションID 72057594305052672、割り当てユニットID 72057594619953152(タイプ「行内データ」)。列「Date」の値がデータ型「datetime」の範囲外です。

列を有効な値に更新します。

DBCC checkDBデータベースの特定のテーブルに対してコマンドを実行しているときに、以下のクエリを実行してそのテーブルの日付列をフェッチしようとすると、上記のメッセージが表示されました:-

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

3 に答える 3

0

Between次のようなキーワードを使用してみてください:-

  select [date] from  [TableName] where [Year]=2011 and Month=1 and [Date] between ('1753-01-01','9999-12-31')
于 2012-12-02T08:50:04.113 に答える
0

まずお前のWHERE clause話が意味不明

  1. 「1753-01-01」より前で、 存在しない「9999-12-31」より の日付を探しています。
  2. [Year] = 2011つまり、2011 年のレコードのみが必要であり、日付範囲でフィルター処理する必要はまったくありません。何らかの理由で必要な場合は、次のようにする必要があります[date] BETWEEN '17530101' AND '99991231
  3. (つまり; )を使用することISO date formatをお勧めします。これが Date out of range エラーの原因である可能性があります。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.
    
于 2012-12-02T09:57:06.047 に答える