2013-03-26 40 views
12

我想每天獲得註冊用戶的總量。目前我正在使用這個Mysql DATE_SUB(NOW(),INTERVAL 1天)24小時還是工作日?

$sql = "SELECT name, email FROM users WHERE DATE_SUB(NOW(), INTERVAL 1 DAY) < lastModified" 

但我不確定這是否每天或每24小時工作?

例如,誰註冊的19小時前,用戶應當不予退還我就像今天的用戶(=星期二)

+0

請看這篇文章http://stackoverflow.com/questions/589652/add-2-hours-to-current-time-in-mysql – Lazyprogrammer 2017-01-05 14:07:37

回答

23

上次更改時間是,據推測,日期時間。要將其轉換爲日期,您可以簡單地將其包裝在DATE()中,即DATE(lastModified)DATE()返回當天00:00的日期時間值的日期部分。

SELECT 
    name, 
    email 
FROM users 
WHERE DATE(lastModified) = DATE(DATE_SUB(NOW() , INTERVAL 1 DAY)) 

以此來匹配WHERE雖然是低效的,因爲所有的行會要求適用於他們DATE,所以它可能會掃描整個表。這是更有效的比較lastModified你正在尋找的上限和下限,在此情況下> = 00:00 SUBDATE(NOW(),INTERVAL 1 DAY)NOW()

< 0點因此你可以使用之間讓你選擇給以下。

SELECT 
    name, 
    email 
FROM users 
WHERE lastModified 
    BETWEEN DATE(DATE_SUB(NOW() , INTERVAL 1 DAY)) 
    AND DATE (NOW()) 
8

我想你需要

SELECT 
    name, 
    email 
FROM users 
WHERE DATE(lastModified) = DATE(NOW()) 

這有效地「輪僅日期」,因此將只匹配記錄「因爲午夜」。

相關問題