以yyyy-mm-dd格式比较日期

时间:2010-01-21 21:27:43

标签: mysql date

有一个我正在研究的查询

... WHERE start_date >= DATE(NOW()) AND end_date >= DATE(NOW())

start_date / end_date采用日期格式:yyyy-mm-dd

从这种查询中可以期待什么样的结果?

5 个答案:

答案 0 :(得分:1)

  

从这种查询中可以期待什么样的结果?

如果start_dateend_date是正确的mySQL DATE字段,它应该可以正常工作并返回所有条目,其中start_date和end_date是今天的日期,或者是将来的日期。

如果它们是varchar字段,您可能需要考虑将列转换为DATE字段 - 我假设值将保留但当然要备份 - 或者将它们作为DATE字段转换(慢!):

WHERE CONVERT(start_date, DATE) => DATE(NOW()) AND CONVERT(end_date, DATE) => DATE(NOW())

答案 1 :(得分:1)

start_date和end_date都大于或等于今天的日期。

您可以使用DATE(now())

,而不是使用CURRENT_DATE()

答案 2 :(得分:0)

您将比较日期(即未考虑的时间)粒度级别的日期。即假日start_date和end_date是日期列的那一天,即当天或晚于今天(NOW())的所有行。

答案 3 :(得分:0)

这应该可以正常工作,因为你可以在日期比较中使用NOW()。

但是,您不需要在DATE内包装NOW() - 只要您使用其中一个与时间相关的(DATE,DATETIME,TIMESTAMP等)字段类型,它就会按原样运行。

因此,您应该只能使用......

WHERE start_date >= NOW() AND end_date >= NOW()

答案 4 :(得分:0)

如果您使用单引号包围start_dateend_date,那就行了。它将为您提供开始日期和结束日期的所有记录。

相关问题