0

以下のように、date_issued と time_issued の 2 つのフィールドがあります。

date_issued       time_issued
1031              225225 (22 hrs 52 mins 25 secs)    

その varchar 値を dd-mm-yy h:m:s として datetime に変換する必要があります

フォローしてみた

select CONVERT(datetime, date_issued+time_issued ,120) as ttt from tbl

しかし、次のエラーが表示されています

Msg 241, Level 16, State 1, Line 2
Conversion failed when converting datetime from character string.

何か案は??

4

3 に答える 3

1

年が2012年であると仮定します。

select CONVERT(datetime, '2012' + LEFT(date_issued, 2) + RIGHT(date_issued, 2) + ' ' + LEFT(time_issued, 2) + ':' + SUBSTRING(time_issued, 3, 2) + ':' + right(time_issued, 2))
于 2012-11-28T11:52:44.267 に答える
0

これが1つの方法です。データに先行ゼロが含まれている場合は削除できますREPLICATE。それ以外の場合は、パディングで日付部分を区別する必要があります。

select
    cast ( 
        stuff(replicate('0', 4 - len(date_issued)) + date_issued, 3, 0, '/') + '/2012'
        + ' ' +
        stuff(stuff(replicate('0', 6 - len(time_issued)) + time_issued, 3, 0, ':'), 6 ,0 ,':')
    as datetime)
于 2012-11-28T11:55:35.463 に答える
0

さて、まずは。

U には明らかな誤りがあります。それらの列が数値 (文字列ではない) である場合、それらを合計していることになり、それは明らかに間違っています。

第二に、それらが文字列の場合、日付領域に年がなく、時間領域に : がありません。3 番目に、これら 2 つの間に「 」を追加する必要があります。

私の例では

SELECT convert(datetime,'20091231 12:12:12') FROM DUAL

私は得る

2009-12-31 12:12:12.000

PS はい、SQL サーバーに DUAL があります。これは Oracle では実行されませんでした。

于 2012-11-28T11:40:22.813 に答える