数値の日付データ型を日時値に変換し、要件に基づいて検索をさらに指定するかなり大きな 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 を使用しています。