我有这个无错误运行的查询:
Select
[Object],
CASE WHEN MsgID = '61' THEN SUBSTRING(Parms,35,6) END AS [MEDIA]
from JnlDataSection
WHERE [Object] = '061 STATEMENTS'
我对此表感兴趣的第三列称为日期。但是数据库是很久以前开发的,并且开发人员已经将日期转换为(numeric(17,9), not null
数据类型)。例如20130106.050257023
。
我想要的是这分成两个不同的列,一列作为日期:2013-01-06
第二列作为时间:(05:02:57
没有微秒)。
我想出了这个查询来转换:
Select
[Object],
CAST(DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+
SUBSTRING([Date],10,2)+':'+
SUBSTRING([Date],12,2)+':'+
SUBSTRING([Date],14,2)+'.'+
SUBSTRING([Date],15,3))) AS DATE) 'Date',
LEFT(CAST(DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+
SUBSTRING([Date],10,2)+':'+
SUBSTRING([Date],12,2)+':'+
SUBSTRING([Date],14,2)+'.'+
SUBSTRING([Date],15,3))) AS TIME),8) 'Time',
CASE WHEN MsgID = '61' THEN SUBSTRING(Parms,35,6) END AS [MEDIA]
from JnlDataSection
WHERE [Object] = '061 STATEMENTS'
AND CAST(substring(convert(varchar(50), [Date]), 0, 5) + '-' +
substring(convert(varchar(50), [Date]), 5, 2) + '-' +
substring(convert(varchar(50), [Date]), 7, 2) AS DATETIME) =
CONVERT(date, DATEADD(day, -1, getdate())) --Converting
但是当我运行这个时我收到这个错误:
消息 8116,级别 16,状态 1,第 1 行
参数数据类型数字对于子字符串函数的参数 1 无效。
任何人都可以修改我的查询以使其无错误运行吗?那将不胜感激。