で容易になるだろう、あなたは一緒にCallDateとCallTime列を結合するために、次の使用することができます:
select DATEDIFF(minute,ApptTime,DATEADD(day,DATEDIFF(day,'19800101',CallDate),CallTime)) as EarlyLate
from <Table>
トン場合、これは陰性の結果を得られます:
DATEADD(day,DATEDIFF(day,'19800101',CallDate),CallTime)
あなたは、彼らが早いか遅いかどうかを決定するために(分、言うために)さらにDATEDIFFを適用しますちょっと早かった、彼らが遅れていれば肯定的な結果になった。私がDATEADD(day,DATEDIFF(day,'19800101',CallDate),CallTime)
の方程式を好む理由は、私の日付/時刻操作のすべてではないにしても、ほとんどの場合同じ基本構造を使用していることです(たとえば、datetime値から時間部分を取り除くのに非常に似たものを使用できます)
また、スキーマを何らかのコントロールがある場合は、私が示唆できる2つの変更があります。最も強力なのは、2つの列を1つのdatetime列に結合することです。これが実現できない場合(たとえば、これらの値を挿入/更新するアプリケーションを変更できないため)、このタイプのクエリは一般的になります。このテーブルに計算カラムを追加することをお勧めします。上記の式。より簡単な方法でクエリを記述することができます(必要に応じて列のインデックスを作成することもできます)。
どのSQL Serverのバージョンですか? – gbn
Microsoft SQL Server 2005 – william