2013-07-15 39 views
0

我有一个相当大的SQL查询将数字日期数据类型转换为日期时间值,并进一步根据我的要求指定搜索。但是,当我运行这个查询时,我看到了列名,但列中没有数据,它只是这个顺序中列的标题:数据集,日期,时间,MsgID,Parms,数据集 当顺序应该可以是:数据,时间,数据集,媒体(用Parms的子字符串分隔列)。此外,这只显示我过去两天的数据,而不是整个数据库,这也是一个问题。SQL查询中空列的输出

我需要一些帮助,以显示所有列中的数据顺序显示列。如果任何人都可以对我现有的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

+0

尝试在没有'Where'子句的情况下运行它,如果您获得结果则是条件... – Milen

+0

@milenpavlov绝对最后where子句? –

+0

我会评论整个地段:'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 - 转换日期以删除时间部分 WHERE SUBSTRING(Parms,35,6)='X05219'AS [Media]'看看这是否会有所作为。 – Milen

回答

-1

,它看起来像你的提取自[日期]进入日期和时间不正确。您将相同的字符串放入'日期'和'时间'

+0

是否有可能在我的sql查询中显示正确的语法? –

+0

我不知道你的数据的来源,也不知道你在分析日期和时间字符串。如果你看看你所称的“日期”,它使用的是与你使用的时间相同的子串。我的猜测是DATE字符串的另一部分,并且使用“/”而不是“:”作为分隔符。 – BWS