2010-01-21 242 views
1

有一个查询我的工作有比较日期

起始日期/ END_DATE在日期格式:YYYY-MM-DD

什么样的应该从这种查询中预期结果?

+0

are start_date/end_date varchar columns? – nos 2010-01-21 21:33:39

回答

1

两个起始日期日期和结束日期大于或等于今天的日期。

而不是使用DATE(now())可以使用CURRENT_DATE()的。

+0

它让我觉得很奇怪,但它本身并不是不正确的。 (这可能只是未来的一件事。) – 2010-01-21 21:33:18

1

这种查询应该预期哪种结果?

如果start_dateend_date是正确的MySQL日期字段,它应该只是罚款,并返回,其中起始日期日期和结束日期是当天的日期,或者在将来的某个日期的所有条目。

如果他们是VARCHAR字段,你可能要考虑转换列插入日期字段 - 我假设值将继续保持,但要理所当然的备份 - 或铸造它们作为日期字段(慢!):

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

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

0

这应该很好,因为您可以在日期比较中使用NOW()。

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

这样,你就应该能够使用...

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

这将工作,只要你包围start_dateend_date单引号。它会给你所有记录开始日期和结束日期在未来的记录。