1

SQL 2008 R2のスクリプトの保存または公開ウィザードで、SQL Serverバージョン2005のスキーマとデータを生成しようとすると、次のエラーが発生しました。

エラーメッセージ:

Microsoft.SqlServer.Management.Smo.SmoException:オブジェクトExamAttemptの列RemainingTimeにタイプTimeが含まれていますが、これはターゲットサーバーバージョンのSQL Server2005ではサポートされていません。Microsoft.SqlServer.Management.SqlScriptPublish.GeneratePublishPage.worker_DoWork(オブジェクト送信者、DoWorkEventArgs e)System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)でSystem.ComponentModel.BackgroundWorker.WorkerThreadStart(オブジェクト引数)

SQL 2005のTime型の代替手段はありますか?

4

1 に答える 1

0

各ユニットを格納するために日時を使用します。そうすることで、将来、すべてのネイティブ日時関数を使用して、このデータを検索または操作できるようになります。2005データベースのアップグレードを選択した場合は、将来、個別のデータ型に簡単にキャストすることもできます。

以下の例では、チェック制約を使用してデータ型の整合性を確保する方法を示しています。

declare @time time = '10:30',
        @date date = '01/01/2001';

select  [theTime] = cast(@time as datetime),
        [theDate] = cast(@date as datetime),
        [theDateTime] = cast(@time as datetime) + cast(@date as datetime);

declare @t table (theDate datetime check(dateAdd(dd,datediff(dd,0,theDate),0) = theDate), theTime datetime check(datediff(dd,0,theTime) = 0))

-- succeeds, since you didnt supply date in the time only column
insert into @t  
    values(cast('01/01/2001' as datetime), cast('10:30' as datetime));

-- fails, since you passed date with the expected time only value
insert into @t
    values(cast('01/01/2001' as datetime), cast('01/01/2001 10:30' as datetime));

-- fails, since you passed time with expected date only value
insert into @t
    values(cast('01/01/2001 10:30' as datetime), cast('10:30' as datetime));
于 2012-08-20T18:19:35.453 に答える