2016-10-11 11 views
0

テーブルにId(int)、Value(int)、Time(datetime)の3つのカラムがあります。私は10分の1日10分間のデータを取得するクエリ(s)はその後、第二セットしたいとの継続的な...データのテーブルから10分間隔でデータを抽出するSQLクエリ

例テーブルから

Screenshot of data

を、私はこのクエリを使用してみましたが、それディスプレイに何も

SELECT sensor_Id 
    ,sensor_Value 
    ,sensor_Timestamp 
FROM TABLE 
WHERE DATEDIFF(MINUTE, sensor_Timestamp, GETDATE()) <= 10 
+0

を、あなたはすべてのレコードをしたいですか、あなたは10で凝集のいくつかの並べ替えをしたいです分間隔?希望する出力を含めてください。 –

+0

はい私は集計をしたいです。したがって、10分の1セット目のデータが表示されます。 – Afiqah

+0

しかし、_how_と_what_を集計しますか? –

答えて

-1

DATEDIFFの結果は、私はあなたが何かすることができると思い日数(https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_datediff

ではありませんそのようなグラム(テストしていません):クエリ以下

SELECT sensor_Id, sensor_Value, sensor_Timestamp FROM Table WHERE sensor_Timestamp > DATE_SUB(now(), INTERVAL 10 MINUTE) 
+1

質問者が 'SQL-SERVER'を要求しましたが、あなたは' MySQL'クエリで回答しています – Arulkumar

+0

私はSQL Server管理スタジオ – Afiqah

0

はあなたの望ましい結果

SELECT sensor_Id, sensor_Value, CONVERT(VARCHAR(10), CONVERT(DATETIME, sensor_Timestamp, 0), 101) + CONVERT(VARCHAR(4),CONVERT(DATETIME, sensor_Timestamp, 0), 108) as sensorTimestamp 
FROM TABLE 
    group by sensor_Id, sensor_Value, sensorTimestamp 

を与えるだろう、私はそれに集約関数を置く分の2番目の数字を切り捨ててきました。

+0

を使用しています。 – Afiqah

+0

@Afiqah申し訳ありませんが、私はそれを逃しましたが、テーブルから追加した後に希望の結果を得られることを願っています:) –

1

クエリが実行された直前の10分の値を表示する場合は、クエリは問題ありません。あなたには、いくつかの特定 10分間隔にしたい場合

、あなたはgetdate()の代わりにその日付&時間を渡すことによって、または開始時刻と終了時刻とbetweenを使用して(それを指定する必要があります例えば

。:

SELECT sensor_Id ,sensor_Value ,sensor_Timestamp 
FROM TABLE where sensor_Timestamp between '2016-10-10 15:50' and '2016-10-10 16:00' 
0

declare @current_time datetime = getdate() 
declare @total_minutes int = datediff(minute, 0, @current_time) 
declare @add_subtract_minutes int = @total_minutes % 10 
declare @start_date datetime = dateadd(minute, @total_minutes - @add_subtract_minutes, 0) 
declare @end_date datetime = dateadd(minute, @total_minutes + (10 - @add_subtract_minutes), 0) 

SELECT sensor_Id 
    ,sensor_Value 
    ,sensor_Timestamp 
FROM TABLE 
WHERE sensor_Timestamp between @start_date and @end_date 
012(私は10で割り切れる分で開始日と終了日の変数を作成しようとしています)、これを試してみてください

テストSnapshot- enter image description here

+0

私は試しましたが、 – Afiqah

0

これは正確な解ではないかもしれない、あなたはこのような何か試すことができます。

Declare @startdatetime datetime= '2016-10-10 15:49:15.000' 

Declare @executeForThisNumber int = 3 -- for 3 intervals of 10 mins after @startdatetime 

While @executeForThisNumber > 0 
begin 
    declare @cmd varchar(max) = 'Select * from table 
    Where sensor_TimeStamp > ''' + convert(varchar(40), DATEADD(mi,-10,@startdatetime), 121) + ''' AND sensor_TimeStamp <= ''' + convert(varchar(40), @startdatetime, 121) + '''' 
    EXEC (@cmd) 

    set @startdatetime = convert(varchar(40), DATEADD(mi,10,@startdatetime), 121) 
    set @executeForThisNumber = @executeForThisNumber - 1 
end 
関連する問題