私はdd.hh:mm:ss.nnnnn
形式の値を持っています。いくつかの例は32.11:45:40.93877
,11:45:30.32012
であり、文字列形式です。dd.hhを追加:mm:ss.nnnnn SQL ServerのDatetimeに時刻形式
文字列形式のdatetime値以上の実行を追加したいと思います。値30.12:43:10.98222
は、30日12時間43分10秒および98222ミリ秒として表すことができます。
擬似コード:
split the string split(5.11:45:40.90399, ':') and add into #temptable(id, value).
while(0 < @counter)
select @val = value from #tempTable where id = @counter
if (@counter = 0)
split '5.11' in 5 and 11 by using charindex, substring, left, Convert to Int function. Also handle availability of day value
datetimevalue = dateadd(day,5,datetimevalue)
datetimevalue = dateadd(hour, 11, datetimevalue)
if (@counter = 1)
datetimevalue = dateadd(minute, 45, datetimevalue)
if (@@counter = 2)
split 40.90399 into 40 and 90399
datetimevalue = dateadd(second, 40, datetimevalue)
datetimevalue = dateadd(millisecond, 90399, datetimevalue)
End of while loop
return datetimevalue
我々は代替ソリューションまたは一部の変更は、上記のプロセスを簡素化することはできますか?
今のところ私はhh:mm:ss
を秒に変換して秒として追加して、dateadd関数の呼び出しを減らすことを考えていました。
はよくない日のthats。その時間です。例えば:5日11時間45分40秒。日時の値にtimespanを追加する方法がわからない –
OK文字列をより詳しく見ることでそれを見たことがありますが、それはあなたの質問。 –
これはまともな文字列スプリッタを持っていれば、それほど悪くはありません。私はこれを使用します。 http://www.sqlservercentral.com/articles/Tally+Table/72993/主な理由は、このスプリッタが超高速であるだけでなく、結果の行番号も返すためです。この場合、これは動作させる上で重要です。私はテーブル値関数は、これを扱うのが非常に簡単になると思います。ネストされたDATEADD呼び出しを使用して、単一のselect文でこれを行うことができるはずです。 –