2016-09-29 10 views
2

は、私は2つの列があります。1つのdatetimeに2つのnvarcharカラム。 MSSQL

date(nvarchar) - it looks like '2015-04-15 00:00:00.000' 
time(nvarchar) - looks like '1899-12-30 11:20:25.000' 

は、私は1つの列(日時)にそのマージする必要があります。私はそれをどうやってできるの?

答えて

1

まず、日付/時刻の値を文字として保存しないでください。しかし、あなたはそれらを変換して追加することができます:

select cast(datechar as datetime) + cast(right(timechar, 12) as time) 

私はちょうど実現しました。デフォルトの日付/時刻形式が分数秒を理解しているかどうかは思い出せません。 、@GordonLinoffが述べたように、あなたが行うことができ、また

UPDATE TABLE 
SET [FullDate] = DATEADD(SECOND, SECOND(TIME), DATEADD(MINUTE, MINUTE(TIME), DATEADD(HOUR, HOUR(TIME), DATE))) 

しかし:あなたはたとえば3列([FullDate])を追加した後、あなたは以下のコードを使用することができます

select (convert(datetime, datechar, 121) + 
     convert(time, convert(datetime, timechar, 121)) 
     ) as datetimeval 
+0

データセットごとに追加が必要ですか? (日付と時刻) –

+0

@RaduGheorghiu。 。 。ドキュメンテーションがうまくいかないことに驚いていますが、「プラス(+)およびマイナス( - )演算子を使用して、datetimeおよびsmalldatetime値の算術演算を実行することもできます。時間への変換は、 'time'コンポーネントのみが存在することを保証することです。私は、SQL Serverがそれを 'datetime'に変換すると思います。 –

0

:以下は安全ですtimeの部分をdatetimeにキャストしてください。したがって、次のようなものがあります。

UPDATE TABLE 
SET [FullDate] = CAST([date] as DATETIME) + CAST([time] AS DATETIME) 
関連する問題