我有一个相当大的 SQL 查询,它将数字日期数据类型转换为日期时间值,并根据我的要求进一步指定搜索。但是,当我运行此查询时,我看到列名但列中没有数据,它只是按此顺序排列的列标题:数据集、日期、时间、MsgID、Parms、数据集:数据、时间、数据集、媒体(带有 Parms 子字符串的单独列)。此外,这仅显示我过去 2 天的数据,而不是整个数据库,这也是一个问题。
我需要一些帮助来按顺序显示所有列中的数据。如果有人可以对我现有的 SQL 查询提出任何建议或修改以获得所需的输出,将不胜感激。我知道这对于专业程序员来说是一个快速解决方案,但我仍在学习其中的技巧并需要一些帮助。
这是我的 SQL 查询:
SELECT [Object] AS [Dataset],
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',
MsgId,
Parms,
CASE WHEN MsgID = '61' THEN SUBSTRING(Parms,35,6)
ELSE '' --Optional ELSE
END AS [Dataset]
FROM ( SELECT ItemId,
CONVERT(VARCHAR(18),[Date]) [Date],
[Object],
MsgID,
Parms
FROM JnlDataSection
WHERE 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()))) A --Converting to date again to remove the time part
WHERE SUBSTRING(Parms,35,6) = 'X05219' AS [Media]
ORDER BY [DATE] DESC;
请注意:我使用的是 SQL Server Management Studio 2008。