我有两列“文本”数据类型,我需要将第一列中的全部数据转换为“日期时间”数据类型,第二列转换为“十进制(10,3)”数据类型。当前数据的SQL转换数据类型
例子: 第一列:20090901000005
隐蔽到2009/08/01 00:00:05
第二栏:.125
转换为00.125
任何一个可以帮助请:)
我有两列“文本”数据类型,我需要将第一列中的全部数据转换为“日期时间”数据类型,第二列转换为“十进制(10,3)”数据类型。当前数据的SQL转换数据类型
例子: 第一列:20090901000005
隐蔽到2009/08/01 00:00:05
第二栏:.125
转换为00.125
任何一个可以帮助请:)
您可以使用左,右分割字符串分成几部分。然后使用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)
对于第二列:
CONVERT(float, right(secondcol, 3))/1000
可以使用这样的:
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
我会这样做:
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
消息8116,级别16,状态1,行1 参数数据类型文本对左函数的参数1无效。 – Thamir
你应该将文本投射到varchar。 – danihp
ou应该将文本投射到varchar。子字符串函数可以做这个工作,请参阅@vicdor答案。 – danihp