テーブルに 2 つの列があります。最初の列には、hhmm (例: 2350 別名 11:50pm) のみが varchar(257) 形式で格納されます。2 列目はタイムスタンプです。
2つの間の分差を取得するにはどうすればよいですか?
2 つの列の例を次に示します。Management Studio で、Alt + F1 をクリックしてテーブルに関する情報を表示すると、列 1 は varchar 型で、列 2 は Datetime 型であると表示されます。
テーブルに 2 つの列があります。最初の列には、hhmm (例: 2350 別名 11:50pm) のみが varchar(257) 形式で格納されます。2 列目はタイムスタンプです。
2つの間の分差を取得するにはどうすればよいですか?
2 つの列の例を次に示します。Management Studio で、Alt + F1 をクリックしてテーブルに関する情報を表示すると、列 1 は varchar 型で、列 2 は Datetime 型であると表示されます。
これを消費可能なデータとして提供していれば、これははるかに迅速かつ簡単だったでしょう。すべてのサンプル データを入力する必要はありませんでした。ここでの問題は、データが不適切に保存されていることです。これはあなたの制御外であることは理解していますが、これを強制的に使用可能なデータ型に戻す必要があります。値が有効な時間であることを確認するには、これにいくつかの検証を追加する必要があります。これはまた、日の境界を超えることを処理しませんが、データの性質を考えると、それをうまく処理するふりをする方法さえわかりません。
create table #Something
(
Col1 varchar(10)
, Col2 datetime
)
insert #Something
select '1230', '2014-12-19 13:09:00.000' union all
select '1350', '2015-08-10 14:49:00.000'
select Col1
, Col2
, DATEDIFF(minute, cast(STUFF(Col1, 3, 0, ':') as time), CAST(Col2 as time))
from #Something