将String与curdate()进行比较 - Mysql

时间:2014-03-25 11:20:47

标签: mysql jdbc

我计划选择多个数据库表。

问题在于我希望当前日期等于当前日期,只是它的类型为varchar,我无法与CURDATE ()进行直接比较...有没有办法将当前日期与字符串类型进行比较?

代码:

select records.date , records.hour, records.Temp, records.Hum, sensors.idSensor,   sensors.idLocalization
from records, sensors
where records.idSensor=sensors.idSensor
      and records.date = curdade() // Here is where I wanted to make the comparison date    
      order by records.date desc;

------------------编辑(已解决)------------------------- -

谢谢大家的帮助。

我用curdade切换了CURDATE。

他做了正确的比较。

2 个答案:

答案 0 :(得分:1)

curdate()转换为适当格式的字符串。类似的东西:

select r.date, r.hour, r.Temp, r.Hum, s.idSensor, s.idLocalization
from records r join
     sensors s
     on r.idSensor = s.idSensor
where r.date = date_format(curdate(), '%Y-%m-%d') // Here is where I wanted to make the comparison date    
order by r.date desc;

您需要为date列使用适当的格式。我只使用了“正确”格式,即将日期表示为字符串时最好使用的ISO标准日期格式。您可以阅读documentation中的格式。并且,最好将当前日期转换为正确的格式,而不是将字符串转换为日期。通过将函数放在比较的“常量”部分,MySQL仍然可以利用date上的索引。

答案 1 :(得分:1)

试试这个。它可能会奏效。但这是一个与日期最新的数据类型比较,而不是字符串到字符串的比较。

select STR_TO_DATE(records.date, '%Y-%m-%d') AS date , records.hour, records.Temp, records.Hum, sensors.idSensor,   sensors.idLocalization
     from records, sensors
      where records.idSensor=sensors.idSensor
      and date = curdate() // Here is where I wanted to make the comparison date    
      order by date desc;