下面最好的方法是什么:

SELECT * FROM users WHERE created >= today;

注意:created是一个datetime字段。


SELECT * FROM users WHERE created >= NOW();

如果列是datetime类型。


SELECT * FROM users WHERE created >= CURDATE();

但我想你的意思是今天创造的

你可以比较datetime和date,例如:SELECT NOW() < CURDATE()给出0,SELECT NOW() = CURDATE()给出1。


SELECT * FROM users WHERE created >= now()

SELECT * FROM myTable WHERE  DATE(myDate) = DATE(NOW())

阅读更多: http://www.tomjepson.co.uk/tutorials/36/mysql-select-where-date-today.html


如果'created'是datetime类型

SELECT * FROM users WHERE created < DATE_ADD(CURDATE(), INTERVAL 1 DAY);

CURDATE()也表示“2013-05-09 00:00:00”


您可以返回所有行,然后在if语句中使用PHP datediff函数,尽管这会给服务器带来额外的负载。

if(dateDiff(date("Y/m/d"), $row['date']) <=0 ){    
}else{    
echo " info here";    
}

SELECT * FROM table_name WHERE CONCAT( SUBSTRING(json_date, 11, 4 ) ,  '-', SUBSTRING( json_date, 7, 2 ) ,  '-', SUBSTRING(json_date, 3, 2 ) ) >= NOW();

json_date(“05/11/2011”)


下面的代码适合我。

declare @Today date

Set @Today=getdate() --date will equal today    

Select *

FROM table_name
WHERE created <= @Today

如果列有索引,并且在列上应用了一个函数,那么索引将不起作用,并发生全表扫描,导致查询非常慢。

糟糕的查询;这将忽略date_time列上的index

select * from users
where Date(date_time) > '2010-10-10'

要在datetime类型创建的列上使用与今天/当前日期相比的索引,可以使用以下方法。

OP的解决方案:

select * from users
where created > CONCAT(CURDATE(), ' 23:59:59')

获取今天数据的示例:

select * from users
where 
    created >= CONCAT(CURDATE(), ' 00:00:00') AND
    created <= CONCAT(CURDATE(), ' 23:59:59')

或者简称为BETWEEN

select * from users 
where created BETWEEN 
      CONCAT(CURDATE(), ' 00:00:00') AND CONCAT(CURDATE(), ' 23:59:59')

提示: 如果您必须对日期和时间进行大量计算或查询,那么将日期和时间保存在单独的列中是非常有用的。(分而治之)


有标记的答案会误导人。问题是DateTime,但所需要的只是CURDATE()。

最简短而正确的回答是:

SELECT * FROM users WHERE created >= CURRENT_TIMESTAMP;