2

I need to Subtract the datetime type data for example from a column like:

         datetime
    20/03/2013:03:17:43
    20/03/2013:03:17:43
    20/03/2013:03:17:44
    20/03/2013:03:17:44
    20/03/2013:03:17:44
    20/03/2013:03:17:44

I am using SQL Server R2 2008; with my Query like:

    SELECT basescore,

    MAX(datetime) - MIN(datetime)

    FROM log

    GROUP BY basescore

But all the time it gives me an error:

       Msg 8117, Level 16, State 1, Line 3
       Operand data type varchar is invalid for subtract operator.

Can somebody help me solving this error? Thanks in advance!

4

4 に答える 4

3

あなたの列は VarChar タイプです。DATEDIFF関数と組み合わせて変換してください。

SELECT basescore, DATEDIFF(DD,MAX(CAST([datetime] as datetime)), MIN(CAST([datetime] as datetime))) FROM log GROUP BY basescore

しかし、私は同意します-列に日時データが含まれている場合-日時型である必要があります。

更新:日付と時刻の間にセミコロンがあります。インポートされたデータを制御できない場合は、上記のクエリを次のように変更できます。

SELECT basescore, DATEDIFF(DD,MAX(CAST(STUFF([datetime],11,1,' ') as datetime)), MIN(CAST(STUFF([datetime],11,1,' ') as datetime))) FROM log GROUP BY basescore

しかし、ご覧のとおり、ますます複雑になっています。列が日時型であれば、はるかに簡単で安全です。

于 2013-07-26T18:54:37.073 に答える
-3

datediff 関数を使用する必要があります

http://msdn.microsoft.com/en-us/library/aa258269(v=sql.80).aspx

ありがとう

于 2013-07-26T18:50:25.863 に答える