あなたがしたいことはそれらを一緒に追加し、日付を取得することです。残念ながら、date
とtime
を一緒に追加することはできません。うれしいことに、datetime
とtime
を一緒に追加できます。 PMが重複し、その後time
、の一部である場合、
WHERE (CAST(date as datetime) + CAST(time as time)) >= DATEADD(HOUR, -2, GETDATE())
をまたは:
ので:time
が文字の
WHERE (CAST(date as datetime) + time) >= DATEADD(HOUR, -2, GETDATE())
場合は、そのだけでなく変換することができる必要があります:
WHERE (CAST(date as datetime) + CAST(LEFT(time, 8) as time)) >= DATEADD(HOUR, -2, GETDATE())
残念ながら、これはインデックスを使用しません。しかし、1つの簡単な方法は、計算列やインデックスを使用することです:
alter table report add datetimecol as (CAST(date as datetime) + time);
create index idx_report_datetimecol on report(datetimecol);
はEDIT:
あなたのデータに問題があるように見えます。試してみてください:
select time
from report
where try_convert(time, timecol) is null;
か:
select time
from report
where try_convert(time, left(timecol, 8)) is null;
日付列も(ネイティブデータ型を使用しないように本当に悪いアイデア)文字列であれば、同様ことをテストします。
'Time'欄で何のデータ型? DDL /スキーマを表示することができますか? – dlatikay