我有两列具有“文本”数据类型,我需要将第一列中的整个数据转换为“日期时间”数据类型,将第二列转换为“十进制(10,3)”数据类型。
当前数据示例:第一列:转换20090901000005
为2009/08/01 00:00:05
第二列:.125
转换为00.125
任何人都可以帮助请:)
我有两列具有“文本”数据类型,我需要将第一列中的整个数据转换为“日期时间”数据类型,将第二列转换为“十进制(10,3)”数据类型。
当前数据示例:第一列:转换20090901000005
为2009/08/01 00:00:05
第二列:.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
您可以使用 left 和 right 将字符串拆分为多个部分。然后使用转换函数将其转换为日期。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)
对于第二列:
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