使用PHP和MySQL。在我的表中,有NOW()sql函数记录的日期字段(日期时间)。此字段中的数据示例值为2010-10-07 10:57:36。我如何选择今天的每月 - 月 - 年的所有数据。我尝试使用代码如下:MySQL如何从今天记录的表中选择数据?
SELECT * FROM table WHERE date=????
使用PHP和MySQL。在我的表中,有NOW()sql函数记录的日期字段(日期时间)。此字段中的数据示例值为2010-10-07 10:57:36。我如何选择今天的每月 - 月 - 年的所有数据。我尝试使用代码如下:MySQL如何从今天记录的表中选择数据?
SELECT * FROM table WHERE date=????
SELECT * FROM table where DATE(date)=CURDATE()
之间使用。
select * from table date between '2010-10-06' and '2010-10-08';
Uh..today意味着一天,用户打开我的网页,不是2010-10-08。顺便说一句,谢谢denolk。 –
试试这个:
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()'。 – Kaivosukeltaja
SELECT * FROM tableName WHERE DATE(fieldDate) = DATE(NOW());
的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'不是公认的内置函数名称。 –
试试这个
SELECT * FROM table WHERE DATE(my_date)=DATE(now())
my_date -> column name
这与5年前给出的答案相同。 –
使用这样的事情它到底适用于我的代码(Access数据库):
select * from Table t where t.column>=Date() and t.column< Date() + 1
SET @day = '2017-12-12' ;
SELECT * FROM table WHERE dateColumn BETWEEN DATE(@day) AND DATE_ADD(DATE(@day), INTERVAL 1 DAY) ;
Kaivosukeltaja的解决方案可能会更好的性能点,虽然 –
消息195,级别15,状态10,行6 'CURDATE'不是一个公认的内置函数名称。 –
'DATE'不是公认的内置函数名称。 –