「テキスト」データ型の 2 つの列があります。最初の列のデータ全体を「datetime」データ型に変換し、2 番目の列を「decimal(10,3)」データ型に変換する必要があります。
現在のデータの例: 1 列目:20090901000005
変換2009/08/01 00:00:05
2 列目:.125
変換00.125
誰でも助けてください:)
「テキスト」データ型の 2 つの列があります。最初の列のデータ全体を「datetime」データ型に変換し、2 番目の列を「decimal(10,3)」データ型に変換する必要があります。
現在のデータの例: 1 列目:20090901000005
変換2009/08/01 00:00:05
2 列目:.125
変換00.125
誰でも助けてください:)
次のようなものを使用できます。
select cast(cast(col1 as varchar(8)) as datetime) +
cast(left(right(cast(col1 as varchar(14)), 6), 2) + ':' +
substring(right(cast(col1 as varchar(14)), 6), 2, 2) + ':' +
right(right(cast(col1 as varchar(14)), 6), 2) as datetime) newDate,
cast(cast(col2 as varchar(10)) as decimal(10, 3)) newDecimal
from yourtable
デモで SQL Fiddle を参照してください
left と right を使用して、文字列をパーツに分割できます。次に、convert 関数を使用して日付に変換します。ODBC 正規 (120) 形式は次のとおりです: yyyy-mm-dd hh:mi:ss
CONVERT(datetime,
left( firstcol, 4 ) + '-' +
left( right( firstcol, 10 ) ,2 ) + '-' +
left( right( firstcol, 8 ) ,2 ) + ' ' +
left( right( firstcol, 6 ) ,2 ) + ':' +
left( right( firstcol, 4 ) ,2 ) + ':' +
right( firstcol, 2 )
, 120)
2 列目:
CONVERT( float, right( secondcol, 3 ) ) / 1000
私は次のようにします:
SELECT
CONVERT(DATETIME,
(SUBSTRING(dateValue, 1, 8) + ' ' +
SUBSTRING(dateValue, 9, 2) + ':' +
SUBSTRING(dateValue, 11, 2) + ':' +
SUBSTRING(dateValue, 13, 2))) as 'dateValue',
CONVERT(DECIMAL(10, 3), decimalValue) as 'decimalValue'
FROM text_table