簡體   English   中英

在mysql中選擇時間戳記之間的時差= 5分鍾的行

[英]Select rows in mysql where difference between timestamp = 5 Minutes

我有一個帶有“時間戳”列的mysql表。

現在,我要選擇彼此相差5分鍾的元素。

簡化示例:

id   |    timestamp
===================
1    |    00:00
2    |    00:01
3    |    00:03
4    |    00:05
5    |    00:07
6    |    00:09
7    |    00:15

應返回的ID 1, 4, 7

sql語句有可能嗎?

這是一個解決方案,無論第一個時間戳是什么,它都應該起作用。

SELECT id, ts FROM (
SELECT 
IF(UNIX_TIMESTAMP(ts) = @prev OR UNIX_TIMESTAMP(ts) % 300 = @prev % 300, @mybool:=1, @mybool:=0) AS mybool,
IF(@mybool = 1, @prev:=UNIX_TIMESTAMP(ts), @prev:=@prev),
t.*
FROM Table2 t,
(SELECT @prev:=(SELECT MIN(UNIX_TIMESTAMP(ts)) FROM Table2 sqt), @mybool:=1) vars
ORDER BY id
) sq 
WHERE mybool = 1;

看到它在sqlfiddle中實時工作。

如果第一個時間戳是“ 00:00”,則只需

SELECT * 
FROM Table1
WHERE UNIX_TIMESTAMP(ts) % 300 = 0
ORDER BY id;

但是您必須使用UNIX_TIMESTAMP()才能使它工作。 時間戳記以32位整數形式存儲在數據庫中,但仍然必須告訴MySQL您要使用整數表示形式。

select id from table where timestamp % 5 = 0

精確的語法在某種程度上取決於timestamp列的數據類型,但是通常您應該能夠使用模運算符來實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM