2017-11-19 7 views
0

私はMicrosoft SQL Server Management Studioを使用して、公共交通システムデータベースを操作しています。 データベースに 'dbo.tblStop_times'という名前のテーブルがあります.2つの列のデータ型はの時刻である必要があります。現時点では、それらは両方ともnvarcharであり、データはこのようなパターンで格納されています。"07:39:00"(引用符なし) 日付の列についても同じ質問がありましたが、ほんの数時間前にstackoverflowでその解決策が見つかりました。tSQL - nvarchar(8)のみを時刻に変換する

以下は、nvarchar列から日付列への変換に適しています。

ALTER TABLE tblCalendar ALTER COLUMN [start_date] DATE NOT NULL; 

私は上記の言及変換が正常に動作しますので、私はそれが可能かもしれないと仮定し、私がしたいことは達成可能であるかどうかわかりません。

私は気圧持っていることである - nvarchar(8)、私はそれになりたいことは、HHのようなものsql time data typeです:mm:ssの [し、可能な場合 - NNNNNN末尾なし - ナノ秒コンポーネント]

答えて

1

あなたはできるはずです方法:

ALTER TABLE tblStop_times ALTER COLUMN start_time TIME NOT NULL; 

Hereはrextesterです。

EDIT:

有効な時間の値を持っていない場合、あなたは問題があります。最初に値を探してください:

select col 
from tblStop_times 
where try_convert(time, col) is null; 

これはあなたに変換できない値を表示します。あなたが好きなら、あなたはそれらをNULLすることができますので、alterは動作します:

update tblStop_times 
    set col = NULL 
    where try_convert(time, col) is null; 
+0

を、私はこのアプローチを試みたが、それはエラーで失敗する - 「文字列から日付/時刻を変換する際の変換が失敗した 声明。終了しました。 –

+0

必要に応じて詳細やスクリーンショットを投稿できます。 –

+0

try_convertはMSSQL SERVER 2012から利用可能です。 –

関連する問題