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

时间:2011-10-07 05:13:18

标签: php mysql datetime select

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

  SELECT * FROM table WHERE date=????

8 个答案:

答案 0 :(得分:27)

试试这个:

SELECT * FROM table WHERE date > CURDATE();

CURDATE()会将当前日期返回2011-10-07,在将2011-10-07 00:00:00datetime进行比较时,该日期将投放到DATE(date) = CURDATE()

请注意,如果您使用date,则会为表中的每个行运行日期转换,如果您有很多行和/或您,这对您的性能非常不利需要经常运行查询。还要确保在{{1}}上有索引,否则两种方法都会更慢。

答案 1 :(得分:22)

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

答案 2 :(得分:3)

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

答案 3 :(得分: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');

等等。

答案 4 :(得分:1)

试试这个

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

my_date -> column name

答案 5 :(得分:1)

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

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

答案 6 :(得分:0)

使用类似这样的东西它完全适用于我的代码(访问数据库):

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

答案 7 :(得分:-2)

使用。

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