我想检索所有记录,其中start_date大于当前时间戳。任何为什么这可能无法正常工作思路:mysql查询检索只有记录start_date> now()
WHERE (UNIX_TIMESTAMP(event_dates.start_date)) > DATE(NOW())
这就是例子START_DATE列2010-10-30
我想检索所有记录,其中start_date大于当前时间戳。任何为什么这可能无法正常工作思路:mysql查询检索只有记录start_date> now()
WHERE (UNIX_TIMESTAMP(event_dates.start_date)) > DATE(NOW())
这就是例子START_DATE列2010-10-30
比较那些2导致意想不到的结果我确定。 可以使用UNIX_TIMESTAMP
或DATE
,但可以同时使用它们。 (或做UNIX_TIMESTAMP(DATE(NOW()))
所以你比较合适的格式。
您与UNIX纪元比较日期值(YYYY-MM-DD),所以您的查询不起作用。
只要确保你需要使用正确的数据类型,你需要日期,使用日期时间或日期,而不是时间戳,再加上MySQL表中的时间戳列有特殊属性的事实
另外,使用索引这个日期列你的查询不会被优化,因为where子句中的now()函数现在先尝试获取变量的值,然后使用这个变量运行你的查询,那么MySQL优化器将有机会OPTI mize你的查询。
谢谢你们这些有点愚蠢的我 – kalpaitch 2010-09-27 19:49:39