MySQL 如何从今天记录的表中选择数据?
Posted
技术标签:
【中文标题】MySQL 如何从今天记录的表中选择数据?【英文标题】:MySQL How to SELECT data from table which recorded today? 【发布时间】:2011-12-02 18:06:27 【问题描述】:使用 php 和 mysql。在我的表中,有 NOW() sql 函数记录的日期字段(日期时间)。该字段中数据的示例值为2010-10-07 10:57:36。如何选择今天的日月年的所有数据。我尝试使用如下代码:
SELECT * FROM table WHERE date=????
【问题讨论】:
【参考方案1】:SET @day = '2017-12-12' ;
SELECT * FROM table WHERE dateColumn BETWEEN DATE(@day) AND DATE_ADD(DATE(@day), INTERVAL 1 DAY ) ;
【讨论】:
【参考方案2】:使用这样的东西,它完全适用于我的代码(访问数据库):
select * from Table t where t.column>=Date() and t.column< Date() + 1
【讨论】:
【参考方案3】:试试这个
SELECT * FROM table WHERE DATE(my_date)=DATE(now())
my_date -> column name
【讨论】:
【参考方案4】:试试这个:
SELECT * FROM table WHERE date > CURDATE();
CURDATE()
将返回当前日期为2011-10-07
,在将datetime
s 与它进行比较时,它将被转换为2011-10-07 00:00:00
。
请注意,如果您使用DATE(date) = CURDATE()
,您将为表格中的每一行运行日期转换,如果您有很多行和/或您需要经常运行查询。还要确保你在date
上有一个索引,否则这两种方法都会更慢。
【讨论】:
如果您在查询结尾上方插入,分号可能会破坏这一点 'CURDATE' 不是可识别的内置函数名称。 @PradeepKumarPrabaharan:这听起来不像是 MySQL 错误。也许您正在运行 MSSQL?请改用GETDATE()
。【参考方案5】:
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' 不是可识别的内置函数名称。【参考方案6】:SELECT * FROM tableName WHERE DATE(fieldDate) = DATE(NOW());
【讨论】:
【参考方案7】:SELECT * FROM table where DATE(date)=CURDATE()
【讨论】:
Kaivosukeltaja 的解决方案在性能方面可能会更好 Msg 195, Level 15, State 10, Line 6 'CURDATE' 不是可识别的内置函数名称。 'DATE' 不是可识别的内置函数名称。 截至目前,CURDATE() 和 DATE() 函数都在 MySQL 5.0 到 beta 8.0 (当前最新版本为dev.mysql.com/doc/refman/5.7/en/…)。您确定您使用的是 MySQL 并且查询中没有其他语法问题吗?【参考方案8】:在之间使用。
select * from table date between '2010-10-06' and '2010-10-08';
【讨论】:
呃..今天是指用户打开我的页面的那一天,而不是 2010 年 10 月 8 日。顺便说一句,谢谢 denolk。以上是关于MySQL 如何从今天记录的表中选择数据?的主要内容,如果未能解决你的问题,请参考以下文章