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

Posted

技术标签:

【中文标题】MySQL 如何从今天记录的表中选择数据?【英文标题】:MySQL How to SELECT data from table which recorded today? 【发布时间】:2011-12-02 18:06:27 【问题描述】:

使用 phpmysql。在我的表中,有 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,在将datetimes 与它进行比较时,它将被转换为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 如何从今天记录的表中选择数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 unixtime(integer) 列包含当前日期而不考虑时间的表中选择记录?

如何从 MySQL 的表中“选择 *”但省略某些列?

如何从mysql中的表中删除重复的行

MySQL如何复制表中的一条记录并插入

MySQL 从具有重复引用条目的联合表中选择唯一记录

如何从具有多个页面的表中获取表记录?