0

数値の日付データ型を日時値に変換し、要件に基づいて検索をさらに指定するかなり大きな SQL クエリがあります。ただし、このクエリを実行すると、列名が表示されますが、列にデータはありません。列のタイトルが次の順序で表示されます: Dataset、Date、Time、MsgID、Parms、Dataset : データ、時間、データセット、メディア (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 を使用しています。

4

1 に答える 1

-1

[DATE] から日付と時刻への抽出が正しくないようです。「日付」と「時間」に同じ文字列を入れています

于 2013-07-15T16:29:35.933 に答える