Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql DATE_SUB(NOW(),间隔1天)24小时还是工作日?_Mysql_Date_Sql Date Functions - Fatal编程技术网

Mysql DATE_SUB(NOW(),间隔1天)24小时还是工作日?

Mysql DATE_SUB(NOW(),间隔1天)24小时还是工作日?,mysql,date,sql-date-functions,Mysql,Date,Sql Date Functions,我正在尝试获取每天的注册用户总数。目前我正在使用这个: $sql = "SELECT name, email FROM users WHERE DATE_SUB(NOW(), INTERVAL 1 DAY) < lastModified" $sql=“选择名称,来自用户的电子邮件,其中DATE_SUB(NOW(),间隔1天)=00:00 onSUBDATE(NOW(),INTERVAL 1 DAY)和

我正在尝试获取每天的注册用户总数。目前我正在使用这个:

$sql = "SELECT name, email FROM users WHERE DATE_SUB(NOW(), INTERVAL 1 DAY) < lastModified"
$sql=“选择名称,来自用户的电子邮件,其中DATE_SUB(NOW(),间隔1天)
但我不确定这是每天还是24小时有效


例如,不应返回22小时前注册的用户。我只想要今天(=星期二)的用户。

lastModified大概是一个日期时间。要将其转换为日期,只需将其包装为date(),即
date(lastModified)
DATE()
返回日期时间值的日期部分,该值实际上是当天的00:00

SELECT
    name,
    email
FROM users
WHERE DATE(lastModified) = DATE( DATE_SUB( NOW() , INTERVAL 1 DAY ) )
使用它来匹配
,其中
虽然效率很低,因为所有行都需要应用日期,因此它可能会扫描整个表。将
lastModified
与您要查找的上限和下限进行比较更有效,在这种情况下>=00:00 on
SUBDATE(NOW(),INTERVAL 1 DAY)
和<00:00 on
NOW()

因此,您可以使用BETWEEN进行选择,给出以下内容

SELECT
    name,
    email
FROM users
WHERE lastModified 
    BETWEEN DATE( DATE_SUB( NOW() , INTERVAL 1 DAY ) )
    AND DATE ( NOW() )
我想你需要

SELECT
    name,
    email
FROM users
WHERE DATE(lastModified) = DATE( NOW() )
这实际上是“只轮到日期”,因此将只匹配“从午夜起”的记录。

请参阅本帖