如何从MySQL表中选择记录当天的数据?

19

使用PHP和MySQL。在我的表中,有一个日期字段(datetime),由NOW()SQL函数记录。该字段中的数据示例值为2010-10-07 10:57:36。如何选择今天的所有日期月年数据。我尝试使用以下代码:

  SELECT * FROM table WHERE date=????
8个回答

31

尝试这样:

SELECT * FROM table WHERE date > CURDATE();

CURDATE()函数返回的是当前日期,格式为2011-10-07,但是在与datetime进行比较时会被强制转换为2011-10-07 00:00:00

需要注意的是,如果你使用DATE(date) = CURDATE()语句,那么每行数据都要进行一次日期转换,如果表中有很多行并且需要频繁查询,这将导致查询效率极低。同时,确保对date字段建立索引,否则两种方法都会变得更加缓慢。


如果您在查询末尾插入内容,分号可能会导致错误。 - David Hariri
'CURDATE' 不是一个被识别的内置函数名称。 - Pradeep Kumar
@PradeepKumarPrabaharan:那不像是MySQL的错误。也许你正在运行MSSQL?尝试使用GETDATE() - Kaivosukeltaja

26

SELECT * FROM table where DATE(date)=CURDATE()


1
Kaivosukeltaja的解决方案从性能角度可能更好,尽管如此。 - Sergey Kudriavtsev
1
消息 195,等级 15,状态 10,行 6 'CURDATE' 不是一个已识别的内置函数名称。 - Ghanshyam Lakhani
2
"DATE" 不是一个被识别的内置函数名称。 - Pradeep Kumar
1
截至目前,MySQL中的CURDATE()和DATE()函数从5.0版本一直持续到beta 8.0版本(https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_curdate是当前最新版本)。您确定您正在使用MySQL,并且查询中没有其他语法问题吗? - Sergey Kudriavtsev

3
SELECT * FROM tableName WHERE DATE(fieldDate) = DATE(NOW());

2
date_format函数允许您轻松切换不同的粒度:

选择与同一天相同的所有内容:

select * from table 
where date_format(date, '%Y-%m-%d') = date_format(now(), '%Y-%m-%d');

同月:

select * from table 
where date_format(date, '%Y-%m') = date_format(now(), '%Y-%m');

同年:

select * from table 
where date_format(date, '%Y') = date_format(now(), '%Y');

从同一时间开始:

select * from table 
where date_format(date, '%Y-%m-%d %H') = date_format(now(), '%Y-%m-%d %H');

等等。


"date_format" 不是一个被识别的内置函数名称。 - Pradeep Kumar

1
SET @day = '2017-12-12' ;

SELECT * FROM table WHERE dateColumn BETWEEN DATE(@day) AND DATE_ADD(DATE(@day), INTERVAL 1 DAY ) ;

1

试试这个

SELECT * FROM table WHERE DATE(my_date)=DATE(now())

my_date -> column name

0

使用类似这样的代码,它在我的代码中完美运行(访问数据库):

select * from Table t where t.column>=Date() and t.column< Date() + 1

-2

使用之间。

select * from table date between '2010-10-06' and '2010-10-08';

1
嗯..今天指的是用户打开我的页面的那一天,而不是2010年10月8日。顺便说一下,谢谢denolk。 - AJ OP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接