簡體   English   中英

如何獲取日期范圍內的行?

[英]How to fetch the rows with in a date range?

我對php中的sql查詢有疑問。在登錄當前日期和時間期間,會將數據庫中存儲的時間``strtotime''轉換為``strtotime''。注銷時間也輸入到數據庫中,一個人一天可以登錄多次。

我想列出最近7天的每個用戶登錄時間(每個用戶分別為每天)。我使用以下查詢

"SELECT a.user_id, b.username, a.clock_in,a.clock_out , DATEDIFF(a.clock_in,a.clock_out) FROM " . DB_PREFIX . "clock_history a left join " . DB_PREFIX . "user b on a.user_id=b.user_id   WHERE clock_in between '".$prestrtime."' and '".$curren."' and clock_status=0 and b.status=1  ORDER BY id DESC "

在表格格式下方給出

id  user_id     clock_in    clock_out   clock_status

1   1           1419829200   1419829800     0
2   2           1419829200   1419851689     0
3   1           1419851633   1419851677     0          

在每天使用此查詢記錄時,不能分開。 請幫助我..等待您的答復!

您可以通過MYSQL查詢計算最近7天,請參見下文

SELECT a.user_id, b.username, a.clock_in,a.clock_out , 
DATEDIFF(FROM_UNIXTIME(a.clock_in),FROM_UNIXTIME(a.clock_out)) 
FROM " . DB_PREFIX . "clock_history a 
left join " . DB_PREFIX . "user b on a.user_id=b.user_id   
WHERE clock_in between UNIX_TIMESTAMP(date_sub(now(),INTERVAL 1 WEEK)) and UNIX_TIMESTAMP(now())
and clock_status=0 and b.status=1  
ORDER BY id DESC 

UPDATE DATE_DIFF()函數可用於兩個日期而非時間戳,因此可使用FROM_UNIXTIME()函數將時間戳轉換為日期

DATEDIFF(a.clock_in,a.clock_out) 

#it return days, if you need hours then `/24` of total days
DATEDIFF(FROM_UNIXTIME(a.clock_in),FROM_UNIXTIME(a.clock_out))  

嘗試這個

SELECT a.user_id, b.username, a.clock_in,a.clock_out, 
DATEDIFF(FROM_UNIXTIME(a.clock_in), FROM_UNIXTIME(a.clock_out)) as days 
FROM " . DB_PREFIX . "clock_history a 
LEFT JOIN " . DB_PREFIX . "user b on a.user_id=b.user_id   
WHERE clock_in BETWEEN UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY)) 
    AND UNIX_TIMESTAMP(NOW())
AND clock_status=0 AND b.status=1  
ORDER BY id DESC

這將為您提供過去7天的記錄,它使用mysql的內置函數NOW()DATE_SUB()

暫無
暫無

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

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