我正在尝试检索start_date大于当前时间戳的所有记录。任何想法为什么这可能不起作用:
WHERE (UNIX_TIMESTAMP(event_dates.start_date)) > DATE(NOW())
这是示例start_date列2010-10-30
答案 0 :(得分:5)
比较那些2会导致意想不到的结果我敢肯定。
使用UNIX_TIMESTAMP
或DATE
,但两者都可以。 (或者进行UNIX_TIMESTAMP(DATE(NOW()))
,这样您就可以比较正确的格式。
答案 1 :(得分:1)
您正在将日期值(yyyy-mm-dd)与UNIX纪元进行比较,因此您的查询不起作用。
确保使用适当案例的正确数据类型。您需要日期,使用日期时间或日期,而不是时间戳。此外,MySQL表中的时间戳列具有特殊属性。
此外,在此日期列中使用索引。由于where子句中的now()函数,您的查询将不会被优化。首先尝试在变量中获取now的值,然后使用此变量运行查询,然后MySQL优化器将有机会优化您的查询。