0

这是我的表是如何设置的解释(在 sqlfiddle 中) http://sqlfiddle.com/#!2/86a54d/2

基本上,我有两列。一个是 varchar 并包含一个名称。另一个是日期时间,包含带有时间的特定日期。

我想选择日期时间中的日期与今天的日期匹配的行。我尝试过类似...

select * from alerts_to_send where date_to_send = now()
select * from alerts_to_send where date_to_send = curdate()

我不完全是从这里去哪里......任何想法将不胜感激:)

再次澄清一下,我想选择今天的日期与我的日期时间类型列的日期部分匹配的行。

4

4 回答 4

1

尝试这个

  select * from alerts_to_send 
  where  DATE_FORMAT(date_to_send,'%m-%d-%Y') = DATE_FORMAT(now(),'%m-%d-%Y')

小提琴

于 2013-07-25T20:38:13.607 回答
0

您可以使用date_formatmysql的功能

select * from alerts_to_send where date_format(date_to_send, "%m/%d/%Y") = date_format(now(), "%m/%d/%Y")

这里是 date_format 的参考:http: //dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

于 2013-07-25T20:37:36.983 回答
0

date_format 函数的替代方法,您可以将日期时间转换为日期:

select * from alerts_to_send where cast(date_to_send as date) = curdate()
于 2013-07-25T21:37:55.810 回答
0

它可能更短:

select * from alerts_to_send where date(date_to_send) = date(now())

但是你会遇到使用索引的问题,所以更好的是:

select * from alerts_to_send where date_to_send >= date(now()) and date_to_send < date(now()) + INTERVAL 1 DAY

于 2016-07-08T07:09:12.697 回答