0

24 時間を超える VB タイムスパンを格納できるデータ型は何ですか? 以下は、SQL タイムスパン値として保存されません。

Dim span As TimeSpan = New TimeSpan(1, 2, 0, 30, 0)

出力

1.02:00:30

これについては後で計算できるようにしたいと思います。

SqlDbType.Time オーバーフロー。値 '1.02:00:30' は範囲外です。00:00:00.0000000 から 23:59:59.9999999 の間である必要があります。

この Fiddler サンプルは、私が求めている結果を示しており、その結果を SQL データベースに保存したいと考えています。
http://sqlfiddle.com/#!3/c7b0d/53

4

1 に答える 1

0

最初に SQL Server 2008 の "datetimeoffset" データ型を提案しましたが、それは間違っています。

以前のコメントが正しく示したように、SQL Server には現在、timespan 値を自然に格納して処理するデータ型はありません。

最も簡単な代替方法は、整数部分が日を表し、小数部分が 1 日の部分を表す浮動小数点値としてオフセットを格納することです。これにより、簡単な計算が可能になります。計算は次のように行うことができます。

select 
    getdate(),                                          -- Current datetime
    CONVERT(date, getdate()),                           -- Current date
    CONVERT(datetime, CONVERT(date, getdate())) +1,     -- Add one day
    CONVERT(datetime, CONVERT(date, getdate())) +1.75   -- Add a day + 3/4 or 18 hours
    getdate() + .75,                                    -- Current Time + 18 hours.
    getdate() + (3/4)                                   -- Current Time + 18 hours.

注: この種の日時計算は、[datetime] データ型でのみ実行できます。したがって、[date] データ型を [datetime] に戻す必要があります。

于 2015-06-27T02:15:12.090 に答える